为什么会有这样的错误,然后感觉代码段也有点弯弯绕绕,能理解的都打在了注释,其他的可以解释详细一点吗
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(); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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时,如何同时保持互联网连接