gpt4 book ai didi

c++ - 将 MSVS 2010 项目转换为 MSVS 2012 RC 但出现错误 "The C++ standard doesn' t 为此类型提供哈希”

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:08 29 4
gpt4 key购买 nike

我有一个项目在 MSVS 2010 SP1 下运行良好。我正在尝试将其转换为 MSVS 2012 RC。我不得不更改一些内容,主要与 C++ header /lib 路径和 MFC 自定义内容有关。但我还有最后一个障碍需要清除。

在 MSVC 2010 中,我使用了很多 unordered_map<basic_string<TCHAR>, int>map<basic_string<TCHAR>, int> 。它编译得很好。但是在 MSVS 2012 中,我只是得到这个错误:“C++ 标准不提供这种类型的散列”

在网上搜索了一下,发现MSVS 2012应该更接近C++11标准,标准只定义了基本类型的哈希函数和定义的4种字符串类型(其中stringwstring ,但不包括 basic_string )。所以我将所有 basic_string<TCHAR> 更改为 wstring 但无济于事......我仍然遇到同样的错误。

我应该怎么做才能再次编译我的应用程序?

最佳答案

显然 OOEngineer 使用了 basic_string不包括 <string> header 。无论如何,部分功能可能是可见的,通过其他 header 的间接包含。

VS2010发布时,当时提出的标准把所有std::hash<> <functional> 特化 header 。在最终的 C++11 标准中,决定最好将它们与各自的容器放在一起,所以一些 hash<>特化已移至 <string> , <vector>

所以,要使用 std::string 的所有(或任何,真的)功能, 你必须包括 <string>自己 header ,而不是依赖另一个系统 header 。

关于c++ - 将 MSVS 2010 项目转换为 MSVS 2012 RC 但出现错误 "The C++ standard doesn' t 为此类型提供哈希”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11154481/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com