我从我的编译器得到这个错误消息:
undefined reference to `Pawn::Pawn(Piece::Color)'当我这样做时,就会发生这种情况:
// board[][] contains pointers to Piece objects
board[0][0] = new Pawn(Piece::BLACK);下面是Pawn类的一部分:
// Includes...
#include "piece.h"
// Includes...
class Pawn : public Piece {
public:
// ...
// Creates a black or white pawn.
Pawn(Color color);
// ...
};下面是Piece类的一部分:
class Piece {
public:
// ...
enum Color {WHITE, BLACK};
// ...
};为什么我会得到这个编译器错误?
发布于 2010-10-22 02:41:07
这个错误实际上与枚举没有任何关系。您需要定义Pawn(Color)构造函数,例如,
Pawn::Pawn(Color)
{
...
}发布于 2010-10-22 02:41:19
您需要为构造函数定义一个函数体。
下面的代码给出了链接器错误:http://www.ideone.com/pGOkn
Pawn(Color color) ;此代码不会:http://www.ideone.com/EkgMS
Pawn(Color color) {}
// ^^ define the constructor to do nothing.发布于 2010-10-22 02:42:34
问题不在于枚举,而在于链接器找不到Pawn::Pawn(Color)的实现。你实现了Pawn::Pawn(Color)构造函数了吗?它在这里被链接了吗?
https://stackoverflow.com/questions/3990739
复制相似问题