我正在为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语句中找到正确的类型,我不确定是否有更好的方法?