我继承了一些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;

它可以编译,但是指针确实是错误的指针。

我注意到类名出现在其自身的声明中,但我不知道其含义是什么。
我不了解Class模板。

如何获得正确的CIENavigator对象(CIE)地址?

最佳答案

为了避免使用Boost.AddressOfCWTLAxControl可能有一个过载的operator&

关于c++ - 如何获取模板化的WTL类对象C++的地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10262682/

10-11 18:29