Y at-il facile à utiliser, classes de haut niveau ou les bibliothèques qui vous permettent d'interagir avec VARIANT
s dans Visual C++?Une façon simple de convertir en/de types Variant en C++
Plus précisément, je voudrais convertir les types de POD (par exemple double
, long
), les chaînes (par exemple CString
), et les conteneurs (par exemple std::vector
) et VARIANT
s. Par exemple:
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 (? Naïvement) suppose que les gens qui travaillent avec COM font cela tout le temps, donc il y aurait très probablement une bibliothèque pratique unique qui gère toutes sortes de conversions. Mais tout ce que je suis en mesure de trouver est un assortiment hétéroclite de classes d'emballage qui convertissent chacun quelques types:
- _variant_t ou CComVariant pour les types de POD
- _bstr_t, CComBSTR ou BSTR pour les chaînes
- CComSafeArray ou SAFEARRAY pour les tableaux
est-il un moyen simple - peu de passer à Visual Basic - pour éviter ce cauchemar de la mémoire maladroite gÉRER ment et bit VT_ARRAY | VT_I4
?
questions connexes:
- CComVariant vs. _variant_t, CComBSTR vs. _bstr_t
- Convert VARIANT to...?
- How to best convert VARIANT_BOOL to C++ bool?
La question ne s'applique pas vraiment à [C++] (qui n'a pas cette construction), juste le dialecte visuel. – dmckee
@dmckee: vous avez raison. –
Pour quiconque est curieux ce que POD signifie ici est une réponse de dépassement de pile. http://stackoverflow.com/questions/146452/what-are-pod-types-in-c –