0

我在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 个参数的函数

如果我评论emplace行,错误就会消失。但是,我没有发现与此函数签名相关的任何滥用:http: //en.cppreference.com/w/cpp/container/unordered_map/emplace

任何帮助将非常感激。

4

1 回答 1

1

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

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

于 2016-03-01T14:23:33.697 回答