首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对枚举的引用未定义

对枚举的引用未定义
EN

Stack Overflow用户
提问于 2010-10-22 02:36:21
回答 3查看 1.8K关注 0票数 3

我从我的编译器得到这个错误消息:

代码语言:javascript
复制
undefined reference to `Pawn::Pawn(Piece::Color)'

当我这样做时,就会发生这种情况:

代码语言:javascript
复制
// board[][] contains pointers to Piece objects
board[0][0] = new Pawn(Piece::BLACK);

下面是Pawn类的一部分:

代码语言:javascript
复制
// Includes...
#include "piece.h"
// Includes...

class Pawn : public Piece {
public:
        // ...

        // Creates a black or white pawn.
        Pawn(Color color);

        // ...
};

下面是Piece类的一部分:

代码语言:javascript
复制
class Piece {
public:
        // ...

        enum Color {WHITE, BLACK};

        // ...
};

为什么我会得到这个编译器错误?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-22 02:41:07

这个错误实际上与枚举没有任何关系。您需要定义Pawn(Color)构造函数,例如,

代码语言:javascript
复制
Pawn::Pawn(Color)
{
...
}
票数 7
EN

Stack Overflow用户

发布于 2010-10-22 02:41:19

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

下面的代码给出了链接器错误:http://www.ideone.com/pGOkn

代码语言:javascript
复制
    Pawn(Color color) ;

此代码不会:http://www.ideone.com/EkgMS

代码语言:javascript
复制
    Pawn(Color color) {}
    //                ^^ define the constructor to do nothing.
票数 5
EN

Stack Overflow用户

发布于 2010-10-22 02:42:34

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3990739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档