【问题标题】:Does CComSafeArray MultiDimSetAt Make a Copy of the Referenced Element?CComSafeArray MultiDimSetAt 是否制作引用元素的副本?
【发布时间】:2011-01-20 17:47:28
【问题描述】:

CComSafeArray::SetAt method提供了一个参数来控制引用的变量是否被复制:

HRESULT SetAt(
LONG lIndex,
const T& t,
BOOL bCopy = TRUE
);

...但是CComSafeArray::MultiDimSetAt method 不提供相同的参数:

HRESULT MultiDimSetAt(
const LONG * alIndex,
const T& t 
);

两个问题:

1.) MultiDim 方法中没有提供此选项是否有原因?

2.) 文档没有指定是否复制了引用的变量。它是隐式复制的吗?

(在我的情况下,我希望它 被复制,因为它是 VARIANT 类型的临时包装器,在将其设置到数组后可以“分离”)

【问题讨论】:

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


    【解决方案1】:

    MultiDimSetAt 内部使用 SafeArrayPutElement 函数。 这意味着 BSTR 将被复制,对象将被添加引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      相关资源
      最近更新 更多