2017-02-01 4 views
0

Ich lerne Zusammensetzung durch ein Connect 4-Spiel, das eine Spalte Klasse innerhalb einer Board-Klasse hat. Ich habe immer diese Überlastung Fehler damit verbracht, um herauszufinden:Funktion kann nicht überlastet werden Fehler C++

g++ -g -c C4Board.cpp -o C4Board.o 
C4Board.cpp:11:1: error: ‘C4Board::C4Board()’ cannot be overloaded 
C4Board(){ 
^ 
In file included from C4Board.cpp:9:0: 
C4Board.h:7:5: error: with ‘C4Board::C4Board()’ 
    C4Board(); 
    ^
C4Board.cpp:20:1: error: ‘C4Board::~C4Board()’ cannot be overloaded 
~C4Board(){} 
^ 
In file included from C4Board.cpp:9:0: 
C4Board.h:9:5: error: with ‘C4Board::~C4Board()’ 
    ~C4Board(); 
    ^
C4Board.cpp:20:12: error: expected ‘}’ at end of input 
~C4Board(){} 
      ^

Hier sind meine Erbauer:

#include <iostream> 
using namespace std; 

#include "C4Col.h" 
#include "C4Board.h" 

C4Board(){ 
    numCol = 7; 
} 

C4Board(int columns){ 
    numCol = columns; 
} 

~C4Board(){} 

bekam ich von der C4Board:: vor den Konstrukteuren zu befreien, weil es mir diesen Fehler zusätzlich zu den gab Überlastung Fehler:

error: extra qualification ‘C4Board::’ on member ‘C4Board’ [-fpermissive] 
C4Board::C4Board(){ 
^ 

Hier ist meine .h-Datei, obwohl ich nicht glaube, es ist das Problem:

class C4Board{ 
    public: 
    C4Board(); 
    C4Board(int); 
    ~C4Board(); 
    void display(); 
    void play(); 
    private: 
    int numCol; 
    C4Col Board[7]; 
} 

Jede Hilfe würde sehr geschätzt werden.

+1

'Ich habe das C4Board :: vor den Konstruktoren' Sie müssen es in der .cpp haben – SingerOfTheFall

+3

Jetzt haben Sie Ihre Frage bearbeitet und die .h-Datei geändert. Es ist immer noch falsch (fehlt ein Semikolon am Ende), aber _haben Sie getestet, dass Ihre Änderung nicht die Fehler behoben hat, über die Sie nach_ fragen? –

Antwort

1

Compiler Funktionen wie unterschiedliche erkennt, müssen Sie angeben, dass diese die Definitionen von Klassenmethoden sind ...

C4Board::C4Board(){ 
    numCol = 7; 
} 

C4Board::C4Board(int columns){ 
    numCol = columns; 
} 
C4Board::~C4Board(){} 
0

Wenn das wirklich Ihre .h-Datei ist, wird es eine endgültige } fehlt. Das kann diese Symptome hervorrufen.

Denken Sie daran, dass die #include so gesehen werden kann, als würde der gesamte Text der .h-Datei in die .cpp-Datei eingefügt. Ein fehlendes finales } führt dazu, dass Ihre Funktionsdefinitionen aus der .cpp-Datei innerhalb der Klassendefinition aus der .h-Datei sind.

Verwandte Themen