/* 使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是, 尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象, 也不能在内联成员函数中使用该类的对象。请看下面的程序段: */ //第一种 #include class Fred; //前向引用声明 class Barney { Fred x; //错误:类Fred的声明尚不完善 }; class Fred { Barney y; }; //第二种 class Fred; //前向引用声明 class Barney { public: void method() { x->yabbaDabbaDo(); //错误:Fred类的对象在定义之前被使用 } private: Fred* x; //正确,经过前向引用声明,可以声明Fred类的对象指针 }; class Fred { public: void yabbaDabbaDo(); private: Barney* y; }; /* 总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。 */