我正在爲COM對象編寫COM包裝器,該對象從客戶端發送不同類型的值,並且希望將這些類型映射到它們的實際C++類型,例如VT_BSTR到一個wstring等使用映射將COM VARIANT類型映射到實際類型
我想定義一個COM Variant類型的枚舉,然後使用一個映射將該枚舉作爲鍵和包含檢索值的實際類型,但是我遇到了問題,我似乎無法找到一個全球性的類型放在我的地圖上,我可以投到一個字符串或雙或任何交給我放在地圖上。
也許我對如何做到這一點的想法是完全錯誤的,請指教?
我在想一個空指針的,但它似乎編譯器不喜歡我的石膏:
(例如)
enum Type
{
VT_INTEGER=0,
VT_DBL=1
};
map<Type, void*> typemap;
typedef pair<Type, void*> m_typepair;
typemap.insert(m_typepair(VT_INTEGER, 0));
typemap.insert(m_typepair(VT_DBL, (double)2.5)); // it does not like this cast
map<Type, void*>::iterator m_typeiter;
遍歷這個地圖很可能需要在switch語句中找到正確的類型,我不確定是否有更好的方法?