使用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
答案 0 :(得分:6)
CComPtr<T>::operator&
的定义旁边有一条评论:
运算符&amp;的断言通常表示一个错误。如果这是真的 然而,需要的是明确地获取p成员的地址。
所以使用
调用你的函数FunctionPrototype(&test.p);