【发布时间】:2010-09-01 22:50:36
【问题描述】:
我正在为一个 COM 对象编写一个 COM 包装器,它从客户端发送不同类型的值,并希望将 Map 中的这些类型映射到它们的实际 C++ 类型,例如 VT_BSTR 到 wstring 等。
我正在考虑定义所有 COM Variant 类型的枚举,然后使用映射将该 Enum 作为键和包含检索到的值的实际类型,但是我遇到了我似乎无法找到的问题放置在我的地图中的全局类型,我可以将其转换为字符串或双精度或交给我放置在地图中的任何内容。
也许我对如何做到这一点的想法是完全错误的,请指教?
我在想一个 void 指针,但是编译器似乎不喜欢我的强制转换:
(示例)
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语句来找到正确的类型,我不确定是否有更好的方法?
【问题讨论】: