我正試圖找到一個解決方案,可能是一個非常微不足道的問題。我想在類初始化程序列表中初始化我的const unordered_map
。但是我還沒有找到編譯器(GCC 6.2.0)將接受的語法。代碼鏈接是here。在初始化程序列表中初始化unordered_map
#include <unordered_map>
class test {
public:
test()
: map_({23, 1345}, {43, -8745}) {}
private:
const std::unordered_map<long, long> map_;
};
錯誤:
main.cpp: In constructor 'test::test()':
main.cpp:6:36: error: no matching function for call to 'std::unordered_map<long int, long int>::unordered_map(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
: map_({23, 1345}, {43, -8745}) {}
^
不允許在初始化列表中進行初始化的復常數?或者語法必須有所不同?
使用大括號,而不是括號。 –
要添加到Vlad中,因爲您傳遞2個參數(2個數組文字)而不是1個嵌套數組,所以會引發錯誤,因此添加一對{}使得您的參數爲{{23,1345},{43, - 8745}}'這可能是你想要的。 –
@VladfromMoscow很好,趕快來,謝謝。我錯過了它。 – ilya1725