2

私はいくつかの 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) アドレスを取得するにはどうすればよいですか?

4

1 に答える 1

1

CWTLAxControlBoost.AddressOfoperator&の使用を回避するために、おそらくオーバーロードされた があります。

于 2012-04-21T20:33:42.737 に答える