2012-04-21 6 views
2

C++コードを継承しました。テンプレート化されたWTLクラスオブジェクトのアドレスを取得する方法C++

クラスを宣言したようにしてください。 CIEがCIENavigatorとして宣言されているがそう

CIENavigator CIE; 
CIENavigator * pCIE = &CIE; 

よう

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

インスタンスは、このコンパイルエラーが

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 

取得し、それは

**のIWebBrowser2する& CIEの種類を考えて

キャストを強制的にそうすると:

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

コンパイルされますが、実際にポインタが間違ったポインタです。

クラス名は宣言自体に表示されていますが、その意味は分かりません。 私はクラステンプレートではないです。

正しいCIENavigatorオブジェクト(CIE)アドレスを取得するにはどうすればよいですか?

答えて

1

CWTLAxControlは、Boost.AddressOfを回避するために、おそらくオーバーロードされたoperator&を持っています。

+0

ありがとうございました。それが私を正しい道に導いた。 &は過負荷でした。 – user1347717