【问题标题】:How to get address of templated WTL class object C++如何获取模板化 WTL 类对象 C++ 的地址
【发布时间】:2012-05-03 00:14:46
【问题描述】:

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

【问题讨论】:

    标签: c++ templates template-specialization wtl


    【解决方案1】:

    CWTLAxControl 可能有一个重载的operator&amp;,以规避使用Boost.AddressOf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多