只有static成员变量,指针或者引用,才可以在一个类的定义体内,用本类作为数据类型,如:
class Bar
{
public:
......
private:
static Bar member1; //OK
Bar* member2; //OK
Bar& member3; //OK
Bar member4; //ERROR "使用正在定义的Bar"
};
注意:如果Bar中有个成员函数的参数的数据类型是Bar,则是可以的。如:
class Book
{
public:
Book(const string& book_name) : author("Stanley B. Lippman")
{
this->book_name = book_name;
}
bool same_author(const Book book) const;
private:
string book_name;
string author;
};