template<typename T>
struct hash;

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

我在这段代码中遇到了一些错误,实际上并没有对我说什么。我应该如何正确声明?

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

最佳答案

您有using namespace std;std namespace 导入所有名称,包括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
  }
};

关于c++ - 声明将字符串映射到模板的unordered_map时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44394063/

10-10 07:39