2010-09-17 98 views
0

什麼應該進入C++的類聲明?什麼應該進入頭文件中的類聲明?

例如,我有在頭文件中的情況如下:

class BoardState { 
public: 
    BoardState(); 

    bool HasWon() const; 
    bool HasMoves() const; 
    bool MakeMove(const int column); 
    bool UndoMove(const int column); 

    const Chip (&grid() const)[kGridHeight][kGridWidth] { return grid_; } 
    const Chip lastplayer() const { return lastplayer_; } 

private: 
    Chip grid_[kGridHeight][kGridWidth]; 
    Chip turn_; 
    Chip lastplayer_; 
    int lastmove_; 
    DISALLOW_COPY_AND_ASSIGN(BoardState); 
}; 

這個類的CPP文件定義了許多額外的小的實用功能,類型和枚舉。是否所有這些都應該在類聲明的私有部分中定義?

+0

隨着返回內部數據成員'grid_'你已經突破了所有的抽象。請參閱[本文(PDF鏈接)](http://www.idinews.com/quasiClass.pdf),其中闡述了這一點。 – sbi 2010-09-17 07:56:36

+1

'class Foo {/ * ... * /};'不是類聲明*,而是類定義*。類聲明看起來像'class Foo;'(注意缺少的類體),有時也稱爲* forward聲明*。無論你是定義還是僅僅聲明類定義中的成員函數都是一個單獨的問題。 – fredoverflow 2010-09-17 08:28:29

回答

0

通常最好將輔助功能留在班級之外。這樣,您可以重載類似類和類似功能的函數。

小實用程序是實現的一部分,不會/不應該爲任何其他組件做任何事情,但應該是private成員。