Существуют ли простые в использовании , высокоуровневые классы или библиотеки , которые позволяют взаимодействовать с VARIANT
s в Visual C ++?
Более конкретно, я хотел бы преобразовать типы 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, делают это постоянно, поэтому, скорее всего, будет единая удобная библиотека , которая обрабатывает все виды преобразований. Но все, что мне удалось найти, - это пестрый ассортимент классов-оболочек, каждый из которых преобразует несколько типов:
Есть ли простой способ - кроме перехода на Visual Basic - избежать этого кошмара неловкого управления памятью и побитового VT_ARRAY | VT_I4
кода?
Похожие вопросы: