我有一个在MSVS 2010 SP1下运行良好的项目。我正在尝试将其转换为MSVS 2012 RC。我不得不改变一些东西,主要是与C ++头/库路径和MFC自定义内容相关的。但我还有最后一个障碍要克服。
在MSVC 2010中,我使用了很多
在网上搜索了一下,我发现MSVS 2012应该更接近C++11标准,而标准仅为基本类型和4种定义的字符串类型(其中包括和,但不包括)定义了哈希函数。 所以我把所有的
我应该怎么做才能再次编译我的应用程序?
在MSVC 2010中,我使用了很多
unordered_map<basic_string<TCHAR>, int>
或map<basic_string<TCHAR>, int>
。它可以编译通过。但在MSVS 2012中,我只得到这个错误:“C++标准没有为此类型提供哈希”。在网上搜索了一下,我发现MSVS 2012应该更接近C++11标准,而标准仅为基本类型和4种定义的字符串类型(其中包括和,但不包括)定义了哈希函数。 所以我把所有的
basic_string<TCHAR>
都改成了wstring
,但还是无济于事……我仍然得到同样的错误。我应该怎么做才能再次编译我的应用程序?
TCHAR
映射到char
,现在您启用了多字节字符,因此TCHAR
映射到wchar_t
。请尝试在项目属性中更改这些设置。 - RedXbasic_string<TCHAR>
可以是std::string
或者std::wstring
(两者都只是 typedef),这取决于你的项目设置。在 C++11 中唯一的区别是,字符串hash<>
现在在<string>
而不是<functional>
中。 - Bo Perssonhash<>
无关。你需要使用<string>
来处理std::basic_string<TCHAR>
。 - MSalters