2010-09-17 64 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成员。