Fehler im Konstruktor



  • Hallo Zusammen,

    sitze nun schon eine ganze Weile an einem merkwürdigem Fehler.
    In meinem Programm (soll mal ein kleines Pokerspiel werden) gibt es die Klasse Player.
    In der Klasse Game wiederum sollen mehrere Objekte vom Typ Player angelegt werden.
    Ich möchte gleich beim anlegen eines Player-Objektes den Namen mit übergeben.
    Deshalb sieht mein Konstruktor in der Klasse Player wie folgt aus.

    Hier mal der Code der Klasse Player:

    #ifndef Player_h
    #define Player_h
    
    #include <vector>
    #include <string>
    using namespace std;
    class Player
    {
    public:
    ..
    ..
    ..
    	Player(string sPlayerName);
    ..
    ..
    private:
    	int iPosition;
    	int iSeat;
    	vector <int> vWholeCards;	
    	string sName;
    
    };
    
    #endif
    

    So lege ich in der Klasse Game die Player-Objekte an.

    class Game {
    public:
    	Game(void);
    	void PreFlop(void);
    	void Flop(vector <int> vAllCards);
    	~Game(void);
    private:
    		int iPot;
    		cardGame Spiel;
    
    		vector <int> vAllCards;
    		Player Spieler1("tt");
    

    Dabei erhalte ich folgende Fehlermeldungen in Visual Studio.

    g:\c++\cardgame\cardgame\cardgame\game.h(26) : error C2059: Syntaxfehler: 'Zeichenfolge'
    g:\c++\cardgame\cardgame\cardgame\game.cpp(15) : error C3867: "Game::Spieler1": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&Game::Spieler1", um einen Zeiger auf den Member zu erstellen.
    main.cpp
    g:\c++\cardgame\cardgame\cardgame\game.h(26) : error C2059: Syntaxfehler: 'Zeichenfolge'
    Player.cpp
    test.cpp
    g:\c++\cardgame\cardgame\cardgame\game.h(26) : error C2059: Syntaxfehler: 'Zeichenfolge'

    Was zur Hölle mache ich falsch???

    Gruß Pascal



  • Passi222 schrieb:

    Was zur Hölle mache ich falsch???

    Du hast innerhalb der Klassendefinition eine Anweisung. Dort sind aber nur Deklarationen zulässig. Das betrifft folgende Codezeile:

    Player Spieler1("tt");
    

    Um einen Member zu initialisieren, kannst du die Konstruktor-Initialisierungsliste verwenden:

    Game::Game() : Spieler1("tt")
    {
        // Konstruktorrumpf
    }
    

Anmelden zum Antworten