unordered_map emplace编译错误

时间:2016-03-01 14:22:15

标签: c++ unordered-map emplace

我在 myclass.h 文件中有以下代码:

typedef std::unordered_set< int, int> Parameters;
class MyClass
{
    public:
        void myFunction();
    private:
        Parameters* m_params;
}

然后, myFunction 如下所示:

void MyClass::myFunction()
{
    ...
    m_params->emplace(1,1);
}

当我尝试编译时,我得到:

术语不会评估为带有1个参数的函数

如果我评论 \ temp> 行,则错误消失。但是,我没有发现与此功能签名有关的任何滥用: http://en.cppreference.com/w/cpp/container/unordered_map/emplace

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

简单错误:您在代码中使用了std::unordered_set,但您的意思是std::unordered_map

在您尝试将某些内容放入容器之前,您的实现无法识别std::unordered_set模板中Hashint的任何错误设置。然后它尝试对输入进行哈希处理,并意识到它不能使用int作为函数。