无法解析符号哈希

时间:2015-07-17 19:28:14

标签: c++ hash std

我有这样的课程

hash

我想强制所有继承的类实现hashcode计算,并提供使用已实现的方法获取()以覆盖hash结构中的Symbol 'hash' could not be resolved的能力。

但是我的编译器显示Eclipse c++错误。 我正在使用CDTTDM gcc 5.1.0插件和{{1}}。有什么问题?

1 个答案:

答案 0 :(得分:1)

如果您想为std::hash Object添加明确的专业化,正确的做法是:

namespace core {
    class Object { ... };
}

namespace std {
    template <>
    struct hash<core::Object> {
        size_t operator()(const core::Object& x) const {
            return x.hashCode(); // though to make this work,
                                 // hashCode() should be const
        }
    };
}

显式特化必须在命名空间范围内 - 具体在std的范围内。并且你只能使virtual函数纯净(= 0),这个函数不应该是虚拟的或纯粹的。

旁注,您的_OBJECT_H包含警卫是reserved identifier。你应该选择另一个。