czy są jakieś łatwy w obsłudze, klasy high-level lub biblioteki, które pozwalają na interakcję z VARIANT
s w Visual C++?Prostym sposobem konwersji do/od rodzaju wariant, w C++
Dokładniej, ja jak do konwersji typu POD (np double
, long
) łańcuchów (np CString
) i pojemników (na przykład std::vector
) i VARIANT
s. Na przykład:
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>
I (? Naiwnie) zakłada się, że osoby pracujące z COM robić to cały czas, więc najprawdopodobniej będzie pojedynczy wygodna biblioteka który obsługuje wszystkie rodzaje konwersji. Ale wszystko, co udało mi się znaleźć to zbieranina asortyment klas otoki, że każdy konwertować kilka typów:
- _variant_t lub CComVariant dla typów POD
- _bstr_t, CComBSTR lub BSTR ciągów
- CComSafeArray lub SAFEARRAY dla tablic
Czy jest jakiś prosty sposób - krótkie przejście do Visual Basic - aby uniknąć tego koszmaru niewygodnej pamięci zarządzać i kod bitowy VT_ARRAY | VT_I4
?
Powiązane pytania:
- CComVariant vs. _variant_t, CComBSTR vs. _bstr_t
- Convert VARIANT to...?
- How to best convert VARIANT_BOOL to C++ bool?
Pytanie tak naprawdę nie dotyczy [C++] (które nie ma tego konstruktu), tylko wizualny dialekt. – dmckee
@dmckee: prawda jesteś. –
Każdy, kto jest ciekawy, co oznacza POD, to odpowiedź przepełnienia stosu. http://stackoverflow.com/questions/146452/what-are-pod-types-in-c –