• 2009-12-08

    c/c++相互包含的类定义

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://changed-wind.blogbus.com/logs/53171454.html

    这是比较让人困惑的地方

       #include <stdio.h>
       
        class A;
       
        class B{
        public:
    -       B( A* a)
    |       {
    |-          parent = a;
    |       }

    |       void print_parent_aa();
    |  
    #if 0
    |       {
    |-          printf( "A.aa = %d\n" , parent->get_aa() );
    |   --------
    |       }

    |   #endif

    |       A *parent;
        };
       
        class A{
        public:
    -       A( int init = 55 ) : b( this )
    |       {
    |-          aa = init;
    |       }
    |
    |       void print_b()
    |       {
    |-          b.print_parent_aa();
    |       }
    |  
    |       int get_aa(){
    |-          return aa;
    |       }
    |  
    |       B       b;
    |       int     aa ;
        };

    void
        B::print_parent_aa(){
    -       printf( "A.aa = %d\n" , parent->get_aa() );
        }

    注意红色的字样:

    当采取声明来互相包含类定义的时候,最内层一方(如B)必须不能使用指针操作具体的成员对象或者函数在内联函数中,但是可以在类的普通函数中使用

     


    收藏到:Del.icio.us




    评论

  • 哈哈,来踩踩师兄的blog~