Possible Duplicate:
Undefined symbols “vtable for …” and “typeinfo for…”?
C++ Undefined Reference to vtable and inheritance
I've a problem with a little project required from my university. It's a simple project of a chess game.
I've the obscure error undefined reference to `vtable for XXX when I define an inherited class from an abstract one... This is the code
Pieces.h
class Pieces {
public:
Pieces(char color) : pieceColor(color) {}
virtual ~Pieces() {}
virtual char getPieceType() = 0;
char getColor() {
return pieceColor;
}
virtual bool isLegalMove(int srcRow, int srcCol, int destRow, int destCol, Pieces* board[8][8]) = 0;
private:
virtual bool areSquaresLegal(int srcRow, int srcCol, int destRow, int destCol, Pieces* board[8][8]) = 0;
char pieceColor;
};
and this a sample inherited class i.e. the pawn one
Pawn.h
#include "Pieces.h"
class Pawn: public Pieces {
public:
Pawn(char color) : Pieces(color) {}
~Pawn();
private:
virtual char getPieceType() {
return 'P';
}
bool areSquaresLegal(int srcRow, int srcCol, int destRow, int destCol, Pieces* board[8][8]);
bool isLegalMove(int srcRow, int srcCol, int destRow, int destCol, Pieces* board[8][8]);
};
The last two methods are implemented in a .cpp file. Every other class is similar to the pawn one obviously.
When I try to compile, the builder gives me: undefined reference to
vtable for Pawn'`
with reference to the line where the constructor is:
Pawn(char color) : Pieces(color) {}
Where am I going wrong?