2013-03-17 96 views
1

基本上我有一个映射作为一个类中的成员变量,我想用基本成员初始化部分中的键值对进行初始化。如何初始化C++中的基本成员初始化部分的std :: map?

Parser::Parser() 
    :operations() //the dictionary 
{ 

} 

我不太确定这样做的语法是什么。我在想像这样的:

Parser::Parser() 
    :operations({"hello","goodbye"},{"foo","bar"}) 
{ 

} 

但这不起作用。

任何想法?

回答

1

你缺少一个初始化列表:

Parser::Parser() 
    :operations({{"hello","goodbye"},{"foo","bar"}}) 
{ 

} 

这应该工作以及:

Parser::Parser() 
    :operations{{"hello","goodbye"},{"foo","bar"}} 
{ 

} 

演示here

编辑:这是应该VS下工作的选择:

struct a { 
    std::map<int, int> x; 

    static std::map<int, int> make_map() { 
     std::map<int, int> some_map = {{1,2}, {3,4}}; 
     return some_map; 
    } 

    a() : x(make_map()) {} 
}; 
+0

它它不喜欢这类原因。它一直在说';'预计 – thed0ctor 2013-03-17 04:50:49

+0

你使用C++ 11吗?我已经为我的答案添加了一个演示。 – mfontanini 2013-03-17 04:53:20

+0

是的,我在Visual Studio 2012中使用C++ 11。该网站很整洁!从来没有见过。但是,我不确定是什么问题。我将你的演示文件粘贴到一个空白的C++项目中,并且它有同样的缺失';'错误。 – thed0ctor 2013-03-17 05:03:42