var mıdır/dan dönüştürmek için herhangi kolay kullanımlı, üst düzey sınıfları veya kitaplıklar o Visual C VARIANT
s ile etkileşime izin ++?basit bir yolu C VARIANT türleri ++
Özellikle, POD türleri (örneğin double
, long
), yaylı (örneğin CString
) ve konteyner (örneğin std::vector
) ve VARIANT
s arasında dönüştürme istiyorum. Örneğin:
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>
Ben (? safça) COM ile çalışan kişiler bu hep yapıyor farz, böylece büyük olasılıkla dönüşümlerin her türlü işleyen bir tek kullanışlı kütüphane olacaktı. Ama bulmak mümkün oldum hepsi her birkaç türde dönüştürdüğünü sarıcı sınıfların rengarenk çeşitler geçerli: POD türleri için
- _variant_t veya CComVariant
- _bstr_t, dizeleri CComBSTR veya BSTR
- dizilerin
için CComSafeArray veya SAFEARRAY herhangi basit bir yolu var mı - Visual Basic geçiş kısa - garip belleğin yönetmek bu kabus önlemek için ment ve VT_ARRAY | VT_I4
kodu?
İlgili sorular:
- CComVariant vs. _variant_t, CComBSTR vs. _bstr_t
- Convert VARIANT to...?
- How to best convert VARIANT_BOOL to C++ bool?
Soru, [C++] (bu yapıya sahip değildir), sadece görsel lehçe için geçerli değildir. – dmckee
@dmckee: haklısın. –
POD'un burada ne anlama geldiğini merak eden herkes için bir yığın taşması yanıtıdır. http://stackoverflow.com/questions/146452/what-are-pod-types-in-c –