2016-03-01 75 views
0

我在myclass.h文件下面的代碼:unordered_map佈設編譯錯誤

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

任何幫助將不勝感激。

+2

'std :: unordered_set!= std :: unordered_map'。 – BoBTFish

回答

1

簡單錯字:您在代碼中使用了std::unordered_set,但您的意思是std::unordered_map

您的實施無法識別std::unordered_set模板中的任何設置Hashint的錯誤,直到您嘗試將某物放入容器。然後它試圖散列輸入,並意識到它不能使用int作爲函數。

+0

我的不好...長時間工作....非常感謝 – omniyo

+0

時間休息一下吧!可能你會犯一個錯誤,編譯器不會救你,並且會在以後咬你。 – BoBTFish