2010-10-21 106 views
3

我是從我的編譯器收到此錯誤信息:未定義參考枚舉

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

     // ... 
}; 

undefined reference to `Pawn::Pawn(Piece::Color)' 

這我這樣做時,會發生

以下是Piece類的一部分:

class Piece { 
public: 
     // ... 

     enum Color {WHITE, BLACK}; 

     // ... 
}; 

爲什麼我得到這個編譯器錯誤?

回答

7

該錯誤實際上與枚舉沒有任何關係。您需要定義Pawn(Color)構造函數,例如,

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

哇......我不敢相信我完全忘了寫構造函數。我想我需要嘗試一下我聽說過的咖啡。 – Pieter 2010-10-21 18:50:44

4

的問題不枚舉,它是鏈接器無法找到執行Pawn::Pawn(Color)。你是否實現了Pawn::Pawn(Color)構造函數,並且它在這裏被鏈接?