重複の可能性:
未定義のシンボル「vtable for …」と「typeinfo for…」?
C++ 未定義の vtable と継承への参照
大学から要求された小さなプロジェクトに問題があります。これは、チェス ゲームの単純なプロジェクトです。
抽象クラスから継承されたクラスを定義すると、あいまいなエラー undefined reference to `vtable for XXX があります...これはコードです
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;
};
これは継承されたクラスのサンプル、つまりポーンクラスです
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]);
};
最後の 2 つのメソッドは、.cpp ファイルに実装されています。他のすべてのクラスは明らかにポーン 1 に似ています。
コンパイルしようとすると、ビルダーはundefined reference to
、コンストラクターがある行を参照して、vtable for Pawn'` を提供します。
Pawn(char color) : Pieces(color) {}
どこが間違っていますか?