【问题标题】:Define a COM pointer as a private member in C++?将 COM 指针定义为 C++ 中的私有成员?
【发布时间】:2013-06-12 21:38:44
【问题描述】:

我想知道如何将 COM 指针定义为私有成员。这是我想做的:

在 h 文件中:

MCLControlPtr _mcSwitch;  //MCLControPtr is "_COM_SMARTPTR_TYPEDEF(_MCLControlClass, __uuidof(_MCLControlClass));"

在 cpp 构造函数文件中

ThorDetectorSwitch::ThorDetectorSwitch() 
{
     _mcSwitch = new MCLControlPtr _mcSwitch(__uuidof(MCLControlClass));

    _deviceDetected = FALSE;
}

但当然它不允许我构建,因为语法不正确。

我想知道如何使用正确的语法做我想做的事?基本上在构造函数中初始化一个 COM 智能指针?我也不想使用初始化列表。谢谢。

更新: 有人有什么想法吗?这真是困扰了我好几天。

【问题讨论】:

  • 初始化列表可能有什么问题?
  • @chris 我得到了“CoInitialize has not been called”的异常,所以我想在 _mcSwitch(__uuidof(MCLControlClass)); 前面调用 CoInitialize(NULL);

标签: c++ com smart-pointers private-members


【解决方案1】:

你可以这样做:

在你的头文件中

COMInterface *_comInterface;

在你的 cpp 文件中

COMInterfacePtr comSmartPtr;
hr = ::CoCreateInstance(see reference for stuff inside here);
_comInterface = comSmartPtr;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2016-05-12
    • 2020-06-24
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多