2012-04-21 49 views
2

我繼承了一些C++代碼,它讓我難堪。如何獲取模板化的WTL類對象的地址C++

有一個類聲明像這樣。

class CIENavigator : public CWTLAxControl<CIENavigator,IWebBrowser2> 
{ 
public: 

實例,像這樣

CIENavigator CIE; 
CIENavigator * pCIE = &CIE; 

獲取此編譯錯誤

1>.\IENavigator.cpp(446) : error C2440: 'initializing' : 
      cannot convert from 'IWebBrowser2 **' to 'CIENavigator *' 
1>  Types pointed to are unrelated; conversion requires 
      reinterpret_cast, C-style cast or function-style cast 

雖然CIE被聲明爲CIENavigator,它認爲& CIE的類型是IWebBrowser2的**

如果我像這樣強制演員陣容:

CIENavigator CIE; 
CIENavigator * pCIE = (CIENavigator *) &CIE; 

它編譯,但指針確實是錯誤的指針。

我注意到類名出現在它自己的聲明中,但我不知道它的意義是什麼。 我沒有在類模板上。

如何獲得正確的CIENavigator對象(CIE)地址?

回答

1

CWTLAxControl可能有重載operator&,以規避使用Boost.AddressOf

+0

謝謝。這使我走上了正確的道路。 &被超載。 – user1347717 2012-04-22 01:52:33

相關問題