是否有任何易于使用的高级类或库可以让您VARIANT
在 Visual C++ 中与 s 进行交互?
更具体地说,我想在 POD 类型(例如double
, long
)、字符串(例如CString
)和容器(例如std::vector
)和VARIANT
s 之间进行转换。例如:
long val = 42;
VARIANT var;
if (ToVariant(val, var)) ... // tries to convert long -> VARIANT
comObjPtr->someFunc(var);
std::vector<double> vec;
VARIANT var = comObjPtr->otherFunc();
if (FromVariant(var, vec)) ... // tries VARIANT -> std::vector<double>
我(天真地?)假设使用 COM 的人一直都在这样做,所以很可能会有一个方便的库来处理各种转换。但我能找到的只是各种各样的包装类,每个类都转换几种类型:
- _variant_t或CComVariant用于 POD 类型
- _bstr_t、CComBSTR或BSTR用于字符串
- 用于数组的CComSafeArray或SAFEARRAY
有没有什么简单的方法——除了切换到 Visual Basic——来避免这种尴尬的内存管理和按位VT_ARRAY | VT_I4
代码的噩梦?
相关问题: