我正在尝试使用 C++11 语法初始化 STL 映射,但这似乎不起作用。初始化后,当我尝试访问元素时,它会尝试调用 Foo 的私有构造函数。我错过了什么?如果我使用它,它会起作用。我想知道是否可以使用 operator[] 来访问初始化值...
#include <map>
#include <string>
class Foo{
public:
int a, b;
Foo(int a_, int b_){
a = a_;
b = b_;
}
private:
Foo(){};
};
int main(){
std::map<std::string, Foo> myMap = { {"1", Foo(10,5)}, {"2", Foo(5,10)} };
int b = myMap["1"].b; // it tries to call private constructor of Foo.
return 0;
}