Ti serve una mappa contenente delle factory function.
Uno spunto potrebbe essere (non molto sofisticato):
codice:class Chitarra: public Strumento{ public: static Strumento* create(string attr) { return new Chitarra(attr); } }; class Pianoforte: public Strumento{ public: static Strumento* create(string attr) { return new Pianoforte(attr); } }; typedef Strumento* (*PF)(string); std::map<string,PF> FunctionMap; FunctionMap.insert(make_pair("Chitarra",&Chitarra::create)); FunctionMapinsert(make_pair("Pianoforte",&Pianoforte::create)); vector<Strumenti*> instruments; // Qui le stringhe arrivano da file. Quelle presenti sono solo come esempio. instruments.push_back( FunctionMap["Chitarra"]("Elettrica")); instruments.push_back( FunctionMap["Chitarra"]("Acustica")); instruments.push_back( FunctionMap["Pianoforte"]("A coda"));

Rispondi quotando