在头文件中定义一个COM智能指针作为成员

Define a COM smarter pointer as a member in header file?

本文关键字:智能 COM 一个 指针 成员 文件 定义      更新时间:2023-10-16

我想知道如何在头文件中定义COM智能指针作为类成员?

  • 在。cpp文件中,我有:

    long MyClass:MyFun(long &deviceCount)
    {
        RESULT h = CoInitialize(NULL);
        MyComPtr ptr(__uuidof(MyComClass));
        if(deviceCount > 0)
            ptr->Connect();
    }
    

但是由于其他函数需要使用ptr,我正在考虑将其更改为类成员并在头文件中定义它,类似于:

  • In .h file:

    MyComPtr _ptr;
    
  • 然后在。cpp文件中,我有:

    _ptr(__uuidof(MyComClass));
    

但是编译没有通过,它说"term不计算为带1个参数的函数"。我很困惑如何才能实现这一点。什么好主意吗?谢谢。

EDIT:所以要使用初始化列表,它应该是这样的?

MyClass:MyClass() : _ptr(new MyCom)
{
    _ptr(__uuidof(MyComClass));
}

在构造时调用初始化列表,以设置否则将为const的变量。它通常用于const变量、引用等。我不太了解COM,但如果智能指针具有与引用相似的机制(即一旦设置它就不能被重定向),那么它必须在构造时使用初始化列表进行初始化。

Constructor() : _Ptr(new MyComObject)
{
 // Other constructor stuff here
}

语法可能是错误的-正如我说的,我不知道COM -但这可能是有帮助的?

编辑:

假设您有以下类:

class MyClass
{
public:
    MyClass(); // constructor
    MyComPtr _ptr;
};

然后在.cpp中,像这样定义构造函数:

MyClass::MyClass() : _ptr(__uuidof(MyComClass)
{
   // rest of constructor code
}