Strukture im Konstruktor
-
Hallo,
ich hab eine Frage bezüglich strukturen und klassen:
ich hab eine class spiel und eine struct Spieler und will im Konstruktor spieler_1 und spieler_2 die namen der spieler zuweisen. ich hab es jetzt im konstruktor gemacht, wollte aber fragen ob es auch über eine Initalisierungsliste geht oder noch anders.struct Spieler { std::string spieler; }; class Spiel { Spiel(std::string spieler_1, std::spieler_2) // ... private: Spieler spieler_1, spieler_2; }; Spiel::Spiel(std::string erster_spieler, std::string zweiter_spieler) { spieler_1.spieler = erster_spieler; spieler_2.spieler = zweiter_spieler; //... }mit schönen grüßen
Gucky
-
ich hab es jetzt im konstruktor gemacht, wollte aber fragen ob es auch über eine Initalisierungsliste geht
Ja, es geht und es ist sogar vorzuziehen.
-
bei mir hat das nämlich nicht geklappt bzw. ich habs flasch gemacht
könnstest du mir ein beispiel geben, wie man es machen kann??
-
Einfach der struct einen Konstruktor geben oder auf C++0x warten und per {} initialisieren.
-
ok danke, also sowas:
struct Spieler { std::string spieler; Spieler (std::string person_spieler) : spieler(person_spieler) { } }; // und dann Spiel::Spiel(std::string erster_spieler, std::string zweiter_spieler) : spieler_1(erster_spieler) , spieler_2(zweiter_spieler) { //... }
-
Gucky schrieb:
ok danke, also sowas:
Im wesentlichen schon, nur würde ich auf ständige Kopien verzichten...
Beispiel:
Spieler::Spieler(std::string const & person_spieler) : spieler(person_spieler) { }Ich würde nur bei den Basisdatentypen (bool, int...) den Aufruf mit Copy-By-Value machen...