我班上有这个enum声明:
const enum METHODS{
Write,
Save,
Update,
Delete
};
但是当我检索到我的枚举值时;我为所有方法得到了这个值-842150451
。
它应该是0,1,2,3对吗?
请帮我解决这个问题。
我将我的枚举值放入map<LPCTSTR, long> m_methodMap
m_methodMap[_T("Save")] = Save;
same with other methods
我以这种方式检索它:
cout << "Values " << m_methodMap.find(sMethodName)->second; // where sMethodName is the methods
答案 0 :(得分:5)
std::map<LPCTSTR, long>
是垃圾。 LPCTSTR
是char*
(或wchar_t*
)的typedef,这意味着地图会根据指针的值比较键,而不是存储在它。你可能意味着std::map<std::basic_string<TCHAR>, METHODS>
。不要在C ++中使用C数据结构。
答案 1 :(得分:1)
所以你的地图会返回一个未初始化的值..它与枚举无关。
答案 2 :(得分:1)
正如Angew指出的那样,你可能意味着:std::map<std::basic_string<TCHAR>, METHODS>.
,你最好不要在这里使用C风格的字符串。但是如果你确定sMethodName恰好是你用来构建地图的指针中的一个,你还需要测试find
是否真的找到了它(不要返回.end()
)而只是使用{{ 1}}。