【问题标题】:error c2338 C++ Standard doesn't provide a hash for this type错误 c2338 C++ 标准不提供此类型的哈希
【发布时间】:2014-02-13 02:46:54
【问题描述】:

所以我在 ClassA 中有一个无序映射,其类型为 string 和 ClassB,但是当我构建时出现 c2338 错误:C++ 标准不提供此类型的哈希。

ClassA.h

#include <unordered_map>

class ClassB;

ClassA
{
private:
    std::unordered_map<std::string, ClassB*> map;
}

B 类.h

class ClassB
{
private:
    size_t x, y, w, h;
    int id;
}

【问题讨论】:

  • std::hash 专门用于 string 标头。
  • 其中还声明了std::string,所以无论如何你都应该包含它。

标签: c++ unordered-map


【解决方案1】:

boost::gregorian::date 也有同样的问题。我需要一个快速(肮脏)的解决方案,最终我使用了map&lt;boost::gregorian::date, int&gt; 而不是unordered_map。可能会慢一些,但对我来说这不是问题。 HTH。

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    相关资源
    最近更新 更多