Sto provando a inizializzare una mappa STL usando la sintassi C++ 11 ma sembra non funzionare. Dopo l'inizializzazione, quando provo ad accedere all'elemento, tenta di chiamare il costruttore privato di Foo. Ho dimenticato qualcosa? Funziona se uso a. Mi chiedevo se potevo usare operatore [] per accedere valori inizializzati ...C++ 11 initialize map
#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;
}
Grazie per la chiara spiegazione. –