我的阿狸乱送 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日
  • 展开全部

悬赏问题

  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥15 流式socket文件传输答疑
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接