声明将字符串映射到模板的unordered_map时出错

时间:2017-06-06 15:27:30

标签: c++ templates data-structures compiler-errors unordered-map

template<typename T>
struct hash;

template<typename T> class WUG{
    public:
        WUG(){
            unordered_map<string,typename T,hash> vertexmap; //Problem
        }
};

我在这段代码中遇到一些错误,实际上对我没有任何意义。我该如何正确宣布?

我遇到的错误信息是:
    [错误]模板参数2无效
[错误]模板参数5无效

1 个答案:

答案 0 :(得分:1)

using namespace std;导致std namesapce中的所有名称,包括std::hash,修复:

struct MyHash;

template <typename T>
class WUG {
public:
  WUG() {
    unordered_map<string, T, MyHash> vertexmap; //Problem
  }
};

或使用标准哈希:

template <typename T>
class WUG {
public:
  WUG() {
    unordered_map<string, T> vertexmap; //Problem
  }
};