首页 > 解决方案 > 来自 _variant_t 的 CComSafeArray 包含安全数组

问题描述

我从 COM 对象方法中得到一个_variant_t变体变量。这个变体实际上是 VARIANT 的 SAFEARRAY 类型。我想使用 CComSafeArray 来操作它。

现在我使用以下代码:

_variant_t v_sa = /*call to the object method*/
CComSafeArray<VARIANT> csa(v_sa.parray);

虽然这可行,但我从 CComSafeArray 构造函数文档中了解到

构造函数使用这个地址来制作数组的副本,因此构造后不会引用该数组。

所以,我可能正在制作安全数组的冗余副本。有没有更好的方法来构造 CComSafeArray 对象?

必须使用 _variant_t 对象的原因是因为它是由 #import 指令生成的代码返回的。

标签: c++comatl

解决方案


推荐阅读