Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对枚举的未定义引用_C++_Polymorphism - Fatal编程技术网

C++ 对枚举的未定义引用

C++ 对枚举的未定义引用,c++,polymorphism,C++,Polymorphism,我从我的编译器收到以下错误消息: undefined reference to `Pawn::Pawn(Piece::Color)' 当我这样做时会发生这种情况: // board[][] contains pointers to Piece objects board[0][0] = new Pawn(Piece::BLACK); 以下是典当类的一部分: // Includes... #include "piece.h" // Includes... class Pawn : publi

我从我的编译器收到以下错误消息:

undefined reference to `Pawn::Pawn(Piece::Color)'
当我这样做时会发生这种情况:

// board[][] contains pointers to Piece objects
board[0][0] = new Pawn(Piece::BLACK);
以下是典当类的一部分:

// 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};

        // ...
};

为什么会出现此编译器错误?

此错误实际上与枚举无关。您需要定义Pawn(Color)构造函数,例如

Pawn::Pawn(Color)
{
...
}

您需要为构造函数定义一个函数体

此代码给出链接器错误:

此代码不会:


问题不在于枚举,而是链接器找不到
Pawn::Pawn(Color)
的实现。您是否实现了
Pawn::Pawn(Color)
构造函数,它是否链接到这里

哇。。。我真不敢相信我竟然忘了写构造函数。我想我得试试我久仰大名的咖啡。
    Pawn(Color color) ;
    Pawn(Color color) {}
    //                ^^ define the constructor to do nothing.