我继承了一些 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) 地址?