IntelliSense显示CComPtr <t>的不同功能集,具体取决于我是使用点运算符还是箭头运算符</t>

时间:2011-07-22 13:32:04

标签: c++ visual-c++ com atl

在我的代码中我有

CComPtr<SomeInterface> object;

当我使用object.时,IntelliSense会显示一组可用的功能。当我使用object->时,它会向我显示另一组可用的函数。为什么这些功能集不同?

1 个答案:

答案 0 :(得分:4)

有了这样的声明:

CComPtr<T> object;

使用dot访问CComPtr类的成员,例如CComPtr.Detach()方法:

*doublePointerToT = object.Detach(); // pass ownership - calls CComPtr<T>::Detach()

并使用箭头获取存储的T*指针,然后箭头操作符应用于检索到的T*,因此您会看到T的成员:

 object->QueryInterface( ... ); //calls T::QueryInterface()

因此,使用dot,您可以看到CComPtr类的成员函数,并且使用箭头可以看到T类的函数。