ci sono eventuali facile da usare, classi di alto livello o librerie che permettono di interagire con VARIANT
s in Visual C++?Un modo semplice per convertire da/per i tipi variante in C++
Più in particolare, mi piacerebbe per la conversione tra i tipi di POD (ad esempio double
, long
), stringhe (ad esempio CString
), e contenitori (ad esempio std::vector
) e VARIANT
s. Per esempio:
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 (? Ingenuamente) assume che le persone che lavorano con COM fare questo tutto il tempo, quindi non ci sarebbe molto probabilmente una singola libreria comodache gestisce tutti i tipi di conversioni. Ma tutto quello che ho potuto trovare è un vasto assortimento di classi wrapper che ogni convertire alcuni tipi:
- _variant_t o CComVariant per i tipi di POD
- _bstr_t, CComBSTR, o BSTR per archi
- CComSafeArray o SAFEARRAY per gli array
esiste un modo semplice - a corto di passare a Visual Basic - per evitare questo incubo della memoria scomoda manage codice bit e bit VT_ARRAY | VT_I4
?
domande correlate:
- CComVariant vs. _variant_t, CComBSTR vs. _bstr_t
- Convert VARIANT to...?
- How to best convert VARIANT_BOOL to C++ bool?
La domanda non si applica a [C++] (che non ha quel costrutto), solo il dialetto visivo. – dmckee
@dmckee: giusto sei. –
Per chi è curioso di sapere cosa significa POD, ecco una risposta di overflow dello stack. http://stackoverflow.com/questions/146452/what-are-pod-types-in-c –