Objekt dynamisch anlegen
-
Hallo zusammen,
ich versuche (
) seit ca. drei Wochen mir C++ beizubringen.
Nun stehe ich vor einem konkretem Problem und weiß auch nach einer längeren Tüftle/ und Recherche Phase nicht mehr weiter!Ich habe mir eine Klasse "Mannschaft" erzeugt. Diese enthält mehrere Membervaribalen wie Stärke der Abwehr. So weit so gut.
Nun wollte ich mir anhand eines arrays des Datentyps "String" quasi dynamisch Instanzen erzeugen.
Und ich komme nicht drauf wie das elegant gehen könnte.Array:
string Mannschaften [5] =
{"Arminia_Bielefeld","FSV_Mainz_05","VfB_Stuttgart","1_FC_Kaiserslautern","Borussia_Dortmund"}Wie gesagt, nun möchte ich Objekte mit den Vereinsnamen aus dem Array innerhalb einer for-Schleife erzeugen.
Könnte mir da jemand einen Tipp geben?
Vielen Dank
-
Mal angenommen, dass der Konstruktor deiner Klasse Mannschaft einen String nimmt, brauchst du gar keine Schleife. Ungetestet, aber ungefähr so:
class Mannschaft { string vereinsname; public: Mannschaft(const string& name): vereinsname(name) {} }; int main() { string Mannschaften [5] = {"Arminia_Bielefeld","FSV_Mainz_05","VfB_Stuttgart","1_FC_Kaiserslautern","Borussia_Dortmund"} vector<Mannschaft> vereine(Mannschaften, Mannschaften + sizeof(Mannschaft) / sizeof(Mannschaft[0])); }
Wenn die Standardbibliothek deines Compiler C++11 (teilweise) unterstützt (das tun schon sehr viele), dann brauchst du nicht einmal mehr den Umweg über das Array, sondern kannst dem vector direkt die Liste mit den Namen zur Initialisierung geben.
edit: Hier ein etwas vollständigeres Beispiel. Und mit einer for-Schleife (aber nur zur Ausgabe):
http://codepad.org/37aIzq3G
-
Mensch vielen vielen Dank!!
Du hast mir sehr geholfen!