Próbuję zainicjować mapę STL przy użyciu składni C++ 11, ale to nie wydaje się działać. Po inicjalizacji, kiedy próbuję uzyskać dostęp do elementu, próbuje wywołać prywatnego konstruktora Foo. Przegapiłem coś? Działa, jeśli używam w. Zastanawiam się, czy mogę użyć operatora [], aby uzyskać dostęp do wartości zainicjowany ...zainicjować mapę C++ 11
#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;
}
Dziękuję za jasne wyjaśnienie. –