c/c++语言开发共享相互引用的结构

我希望有两个结构可以互相包含。 这是一个例子:

struct a { struct b bb; }; struct b { struct a aa; }; 

但是这段代码没有编译。 gcc说:

 test.c:3: error: field 'bb' has incomplete type 

有没有办法实现这个目标?

    那该怎么办? a将包含b ,其中包含a ,其中包含b等…

    我想你想用指针代替?

     struct b; struct a { struct b *bb; }; struct b { struct a *aa; }; 

    即便如此,编码风格也很糟糕 – 如果可能的话,应该避免循环依赖。

     struct a; struct b; struct a{ struct b *bb; }; struct b{ struct a *aa; }; 

    大多数头文件在定义其成员之前声明结构。 结构定义将在其他地方定义。

    解决这个问题的常用方法是使它们成为指针然后动态分配它们,甚至只是从另一个结构的静态实例的地址中指定指针。

     struct a { struct b *bb; }; struct b { struct a *aa; }; struct a a0; struct b b0; void f(void) { a0.bb = &b0; b0.aa = &a0; } 

    但是,我建议你寻找一个树状结构的组织。 也许两个对象都可以指向常见的第三种类型。

    这是荒谬的。

    想象一下,如果你说每个X包含一个Y并且每个Y包含一个X ,那么每个X内部都是一个Y ,而Y又包含一个X ,而X又包含一个Y ,而Y又包含一个X无限制

    相反,您可以让X包含 Y引用或(或指向 ),反之亦然。

      以上就是c/c++开发分享相互引用的结构相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/518771.html

      (0)
      上一篇 2020年12月4日
      下一篇 2020年12月4日

      精彩推荐