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...


Anmelden zum Antworten