如何使用COM智能指针作为输入参数来调用例如库函数

时间:2012-01-30 10:26:46

标签: c++ com smart-pointers

使用CComPtr或_com_ptr智能指针作为输入输出参数的最佳方法是什么?

void FunctionPrototype(Test** test) {
    // you can use here test or create a new Test here and assign to test
}

CComPtr<Test> test;
test.CoCreateInstance(..., ..., ...);
test->SetValue(10);
FunctionPrototype(&test); // assertion since test.p is not NULL

1 个答案:

答案 0 :(得分:6)

CComPtr<T>::operator&的定义旁边有一条评论:

  

运算符&amp;的断言通常表示一个错误。如果这是真的   然而,需要的是明确地获取p成员的地址。

所以使用

调用你的函数
FunctionPrototype(&test.p);