【发布时间】:2012-09-07 13:27:21
【问题描述】:
可能重复:
Undefined symbols “vtable for …” and “typeinfo for…”?
C++ Undefined Reference to vtable and inheritance
我对大学要求的一个小项目有疑问。 这是一个简单的国际象棋项目。
我有一个模糊的错误 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]);
};
最后两种方法在 .cpp 文件中实现。 显然,其他每个类都与 pawn 相似。
当我尝试编译时,构建器给了我:undefined reference tovtable for Pawn'`
参考构造函数所在的行:
Pawn(char color) : Pieces(color) {}
我哪里错了?
【问题讨论】:
-
确保为派生类中的所有虚方法提供定义。只有纯虚方法才允许存在而没有定义。
-
Pawn的析构函数是否实现?
-
ty @Pie_Jesu 启发了 XD
标签: c++ virtual-functions