Estoy tratando de inicializar un mapa STL usando la sintaxis C++ 11 pero eso no parece funcionar. Después de la inicialización, cuando intento acceder al elemento, intenta llamar al constructor privado de Foo. ¿Me he perdido algo? Funciona si uso at. Me pregunto si podía usar el operador [] para acceder a los valores inicializados ...C++ 11 inicializar el mapa
#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;
}
Gracias por la clara explicación. –