我在 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
非常感谢任何帮助。
答案 0 :(得分:1)
简单错误:您在代码中使用了std::unordered_set
,但您的意思是std::unordered_map
。
在您尝试将某些内容放入容器之前,您的实现无法识别std::unordered_set
模板中Hash
到int
的任何错误设置。然后它尝试对输入进行哈希处理,并意识到它不能使用int
作为函数。