我的阿狸乱送 2022-12-14 21:57 采纳率: 57.1%
浏览 34
已结题

C++中成员对象的指针

为什么会有这样的错误,然后感觉代码段也有点弯弯绕绕,能理解的都打在了注释,其他的可以解释详细一点吗

img

  • 写回答

1条回答 默认 最新

  • 婉瑄|Vivian_ 2022-12-14 23:25
    关注

    正如编译器的提示所述,编译器只在CA类的前面找到了CB类的声明,但没有找到其定义;
    对CA类来说,CB是一个不完整类型(incomplete type),因为没有对其定义;
    所以调用一个不完整类型的方法会报错。

    如果把CB的定义放在CA的前面,就没有错误了。

    #include <iostream>
    
    class CA;
    
    class CB
    {
        CA* a;
    public:
        void funcA()
        {
            std::cout << "calling CB" << '\n';
        }
    };
    
    class CA
    {
        CB* b;
    public:
        void callCB()
        {
            b->funcA();
        }
    };
    
    
    int main()
    {
        CA a;
        a.callCB();
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月23日
  • 已采纳回答 12月15日
  • 修改了问题 12月14日
  • 修改了问题 12月14日
  • 展开全部

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan