在头文件中定义一个COM智能指针作为成员
Define a COM smarter pointer as a member in header file?
我想知道如何在头文件中定义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
}
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 优先顺序:智能指针和类析构函数
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 智能指针作为无序映射键,并通过引用进行比较
- 智能指针概念所有权和寿命
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 尝试使用智能指针时引发异常
- 两个 COM 组件中 ENUM 的重复条目
- COM 接口 c# 封送数组数组
- 我可以制作指向智能指针的智能指针吗?
- 通过智能指针和转换对基本模板参数进行模板推导
- 为什么我的COM智能指针从方法返回时会被删除
- 使用带有COM接口的STL智能指针
- 如何在不同的目标平台上以编程方式智能注册 32 位 COM/DLL 组件
- C++11 检查成员的 COM 智能指针
- 在语句中创建 COM 智能指针时出现错误 C2275 "if"
- 如何使用COM智能指针作为内外参数来调用例如库函数
- 在头文件中定义一个COM智能指针作为成员
- 试图通过一个指向COM接口的智能指针来调用一个函数