2010-04-27 6 views
5

STL kullanırken:Önerileri COM Object/CComPtr ve o şekilde directshow bazı COM ilgili şeyler yapıyorum

typedef CComPtr<IBaseFilter> AutoIBaseFilterPtr; 
map<CString, AutoIBaseFilterPtr> _filterMap; 

bir DirectShow ilgili com nesnelerin listesini ve bunların kolay bir ad saklamak için. STL karıştırma ve CComPtr veya prehaps sadece genel olarak STL ve COM karıştırırken dikkat edilmesi gereken bir daha şeyler varsa

VC10 derleyici değişiklikleri önceden Tamam kodunu etkileyebilecek nasıl this article (See:Problem 2) bulduktan sonra, merak ediyorum.

Herhangi ipuçları

ölçüde bahsettiğim edilmediğini düşünebilirsiniz sadece hafif bir şey çok operator& overloads çünkü CAdapt, CComBSTR yanı sıra CComPtr için gerekli olmasıdır sayesinde

+2

sayesinde X işaretini sözü bir gösterici döndürmesi gerektirir olarak gerekli CAdapt yapar operator& aşırı yüklüyor. – sharptooth

+0

Oldukça uzun bir süredir "CAdapt" ın STL <-> ATL köprüleme için önerildiğini ve hatta gerekli olduğunu düşündüm? –

+0

Hala COM için biraz yeniyim, bu yüzden CAdapt'ın STL ile olan kullanımının farkında değildim ama ona bakıyorum, evet, tavsiye edildiği gibi görünüyor ama sanırım orada bir kaç insan var. VC10 altında programlarını derlemeye çalışırken kötü bir sürpriz. Sorum şu: Kötü bir tuzağa düşebileceğim daha fazla vaka bulmayı amaçlıyor. Etiket düzenlemeleri için teşekkürler çok btw. – Andrew

cevap

2

mutluluk duyacağız.

Aslında, birçok STL kapları şey X'in adresini alarak bu makaleye bağlantıdan

+0

Benim soru sıralama olsa bile, yanıt olarak işaretlendi açık uçlu, yanıtlamak için tek kişi sizsiniz :) – Andrew

+3

'CAdapt' artık VC2010 RTM'deki tüm STL kapsayıcılar ve çoğu STL algoritmaları için' CComPtr' veya 'CComBSTR' için gereklidir. Bunun nedeni, şimdi 'std :: addressof' (C++ 0x'da yeni bir şey) kullanmaktan ziyade“ operatör ”ve“ obje ”adresini almaktan ziyade bu yardımcı fonksiyonun aşırı yüklenen bir operatörün“ etrafında çalışmasını ”ve her zaman gerçek işaretçi. –

+0

Pavel; Eklenen bilgiler için teşekkürler, hala VS2010'a bakmadım. Std :: addressof üzerinde okumaya ihtiyacım var - ilginç görünüyor! –