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