定义一对类X和Y,其中X包含一个指向Y的指针,而Y包含一个类型为X的对象。
正确代码:
class X; //声明X
class Y{ //定义类型Y
X* x;
};
class X{ //定义类型X
Y y;
};
错误代码:
class Y; //声明X
class X{ //定义类型X
Y y;
};
class Y{ //定义类型Y
X* x;
};
代码说明:类X的声明称为前向声明,它向程序中引入了名字X并且指明X是一种类类型。对于类型X来说,此时我们已知它是一个类类型,但是不清楚它到底包含哪些成员,所以它是一个不完全类型。我们可以定义指向不完全类型的指针,但是无法创建不完全类型的对象。