指向COM对象的成员变量指针

时间:2010-04-20 11:28:37

标签: c++ com smart-pointers

将成员变量指针引用到COM对象并通过C ++中的类重新引用是否存在任何问题。

是否有人知道您每次想要使用COM对象时都要调用.CreateInstance的原因,即每次都获得一个新实例。

我看不出有什么理由想要这样做,

谢谢,

(不是可接受的答案!)

3 个答案:

答案 0 :(得分:5)

这取决于你真正想要的东西。

如果每次必须保持指针时都需要相同的对象。如果每次都需要一个新对象(无论出于何种原因),每次都必须创建一个新实例。如果你不在乎保持对象是可取的,因为对CoCreateInstance()的调用相对昂贵。

答案 1 :(得分:2)

我想说这取决于COM对象是什么以及如何使用它。重用ADO连接通常很好,但如果将其置于脏状态,那么在重用它时可能会遇到奇怪的行为。某些COM对象可能具有重新初始化或清除方法,您可以调用它们将它们重置为干净状态。

答案 2 :(得分:2)

在这种情况下没有一般规则,因为有许多变量可以决定它是否是个好主意。

首先:如果您拥有相关的COM对象,即拥有源代码并控制它们的使用方式,那么是的,它非常安全。

如果COM对象是第三方COM对象,有时它们中的蹩脚代码可能会强制您每次使用它们时“创建实例” - 出于必要(并自我保护)。

如果COM对象充当代理对象,您可能需要在每次使用它们时创建它们,因为场景后面的东西,即使用相同对象的其他客户端。

还有更多情况,但总结一下:这取决于......