为什么类专业化会出错?

问题描述 投票:0回答:1

我正在尝试用C ++实现字典,但是当我定义类哈希的特殊化时,会出现错误:

error: 'hash' is not a class template
error: template argument required for 'class hash'

这里是代码

template <class T>
class hash{
public:
  size_t operator()(const T the_key) const;
};


/* a specialization with type string */
template<>
class hash<string>
{
public:
  size_t operator()(const string the_key) const {
    unsigned long hash_value = 0;
    int length = (int) the_key.length();
    for (int i=0; i<length; i++)
      hash_value = 5 * hash_value + the_key.at(i);
    return size_t(hash_value);
  }
};

可能是什么问题?

c++ dictionary data-structures hash hashtable
1个回答
0
投票

这应该起作用,除了您的代码中可能包含using namespace std,这会导致您的hash模板与std模板冲突。删除它,问题应该消失。

© www.soinside.com 2019 - 2024. All rights reserved.