1. /*
    2. 使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是,
    3. 尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象,
    4. 也不能在内联成员函数中使用该类的对象。请看下面的程序段:
    5. */
    6. //第一种
    7. #include<iostream>
    8. class Fred; //前向引用声明
    9. class Barney {
    10. Fred x; //错误:类Fred的声明尚不完善
    11. };
    12. class Fred {
    13. Barney y;
    14. };
    15. //第二种
    16. class Fred; //前向引用声明
    17. class Barney {
    18. public:
    19. void method()
    20. {
    21. x->yabbaDabbaDo(); //错误:Fred类的对象在定义之前被使用
    22. }
    23. private:
    24. Fred* x; //正确,经过前向引用声明,可以声明Fred类的对象指针
    25. };
    26. class Fred {
    27. public:
    28. void yabbaDabbaDo();
    29. private:
    30. Barney* y;
    31. };
    32. /*
    33. 总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。
    34. */