使用哪些COM智能指针类?

Rod*_*ddy 12 c++ com c++builder

我对用于C++编程的COM智能指针类的选择感到困惑:

我知道有三个四个:

  • CCOMPtr 来自ATL
  • _com_ptr_t来自MS Com支持类
  • TComInterface (因为我正在使用C++ Builder 2009)
  • CCOMQIPtr,(我之前忘记了)

我已经阅读了前两个错误与异常处理差异,但TComInterface似乎完全没有记录.根据我的发现,前两个似乎都有问题或"出乎意料"的行为.

理想情况下,我想要一些干净而现代的C++,但boost::com据我所知不存在......

我需要控制来自其他供应商的应用程序.它们通过TLB文件提供COM接口.

Kri*_*son 6

如果您使用类型库导入内容,它将根据_com_ptr_t相关的 COM 支持类生成代码。如果您只是使用这些库中的内容,请继续使用它们。

如果您正在编写基于 ATL 的代码,请使用CCOMPtr和其他基于 ATL 的类。

如果您需要混合搭配这两种类型,事情可能会变得很糟糕,但您可能应该熟悉这两种类型,并使用对您当时所做的事情最有意义的一种。

好处是您拥有所有这些内容的源代码,因此您不必仅依赖文档(自从 .NET 出现以来,文档并没有得到太多关注)。