/*
 使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是,
 尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象,
 也不能在内联成员函数中使用该类的对象。请看下面的程序段:
 */
  
 //第一种
 #include<iostream>
 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;
 };
  
 /*
 总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。
 */
05-19 00:15