2012-05-30 37 views
1

我在很多年前做過ATL編程,現在再次沿着這條路走下去。我上次記得,編譯器有一種方法可以自動優化put_和get_(即屬性)。我真的無法瞭解我上次做過的事情。ATL接口指針:替換get_和put_

目前,我這樣做:

// assume p is a pointer to an interface 
CComBSTR name; 
p->get_Name(&name); 

此代碼是真的纏着我,我肯定有一個更好的辦法:

// can we do this? 
CComBSTR name(p->get_Name()); 
// or maybe this 
CComBSTR name(p->Name); 

我無法弄清楚如何做到這一點使用CComPtr和_com_ptr_t。還要注意,p是指向同一個庫中的接口的指針。所以我沒有使用#import或任何東西。

+0

如果您使用'#import',它會爲您創建這些屬性樣式訪問器。 –

+0

@RomanR。那是對的。但是我正在處理同一個庫中的一個接口。我不知道該怎麼做。 – Telemat

+0

在同一個庫中,你沒有這些訪問器方便,你有'_i.h'文件,而不是原始指針。你當然可以創建一個輔助類,但是這會失去自動獲取它們的目的。我以爲你可能想重新'#import'你的類型庫到一個側面的命名空間,並且讓這個代碼手動訪問你的私有接口指針和這些自動生成的類。我不認爲我會自己做,但仍然看起來可行,可能有幫助。 –

回答

-1

CComBSTR name(p-> Name);是正確的東西