下列代码编译的时候会报错如标题

#include "iostream"class B;class A {public:
void func(B* para) {para -> B_func();
}
};class B {public:
void B_func() {std::cout << "sml" << std::endl;
}
};int main() {B* T1 = new B();
A* T2 =new A();
T2 -> func(T1);
}

修改方法如下:

#include "iostream"//classA中用到了classB的成员,所以classB要放到classA之前class B {public:void B_func() {std::cout << "sml" << std::endl;}};class A {public:void func(B* para) {para -> B_func();}};int main() {B* T1 = new B();A* T2 =new A();T2 -> func(T1);}

追问:

你说的对,但是现在我不想把B放到A之前。这个只是我举的例子,实际中的代码,A中有B,B中有A,所以在不调整A和B类的位置前提下 怎么解决上面的错误呀,谢谢你了!

追答:

因为classA的func函数使用了B的成员,所以必须在使用之前知道B的定义细节。
你可以把A的func延后实现(只在classA中定义func)。
具体代码如下:

class B;class A {public:void func(B* para);};class B {public:void B_func() {std::cout << "sml" << std::endl;}};void A::func(B* para) {para -> B_func();}int main() {B* T1 = new B();A* T2 =new A();T2 -> func(T1);}

invalid use of incomplete type ‘class B‘相关推荐

  1. error: invalid use of incomplete type 'XXXX' ;error: forward declaration of 'XXXX' 声明改为包含头文件

    error: invalid use of incomplete type 'XXXX' error: forward declaration of XXXX 声明改为包含头文件 class XXXX ...

  2. invalid use of incomplete type struct 或者是class的解决办法

    在写完代码之后进行编译时,提示"invalid use of incomplete type struct" 或者 "invalid use of incomplete ...

  3. Qt 错误提示1: invalid use of incomplete type ‘***‘

    错误提示: invalid use of incomplete type '***' 出现此类错误的原因一般都是没有使用类的头文件. 可以通过查询类的头文件,将其包含进来即可. 1.查询类的头文件 通 ...

  4. invalid use of incomplete type ‘class Ui ::Ccam_para_set‘的解决办法

    参考文章:在其他类中使用mainwindow主窗口的UI指针 在使用QT进行软件开发的时候,遇到invalid use of incomplete type 'class Ui ::Ccam_para ...

  5. QT错误1-error: invalid use of incomplete type ‘class xxx‘

    在qt开发当中,经常遇上这种错误. 这个错误翻译成中文是:"错误:无效使用不完整的类型"类xxx"" 那从编程语言本身是什么意思呢? 不完整的类型,真是非常让人 ...

  6. invalid use of incomplete type ‘class UI::MainWindow‘解决方法

    Qt窗口中点击了objectName但是没有修改,再点击别的位置,会自动把MainWindow第一个字母小写,导致上面的出错 改回大写就好了

  7. linux c++ 报错 invalid use of incomplete type 解决方法

    原因:编译器不知道所用的struct 或者是class的具体实现, 分析:通常出现在如下情况:假设我们有一个class some定义在some.h中,实现在some.cpp中,我们在other.cpp ...

  8. invalid use of incomplete type 报

           gcc中,在引用某个已经实现的类时:如果只是定义某个类的指针,可以使用class关键字先进行声明,而不需包含头文件:但如果涉及到定义某个类的对象或是引用类的某个具体成员时,则必须包含该类 ...

  9. error: invalid use of incomplete type 'struct word'|

    发生错误的程序: #include <stdio.h> #include <string.h> #include <algorithm> int cmp(const ...

最新文章

  1. c语言统计最长单词长度,求3个字符串中最长单词的长度 求救 会一个的
  2. laravel 目录
  3. android.mk 优化编译,android下ndk编译c优化
  4. 小打卡基于阿里云构建企业级数仓的实践及总结
  5. 【Linux】一步一步学Linux——getfacl命令(118)
  6. 重庆找Java开发工作_重庆【Java开发程序员】
  7. 脚本配置文件(通过一个案例解释下什么叫脚本配置文件)
  8. 判断数组中是否包含某个元素,判断对象中是否包含某个属性,判断字符串中是否包含某个字符串片段
  9. c# xmlhttp POST提取远程webservice数据
  10. VMware 修复 Fusion 和 Horizon 中的两个提权漏洞
  11. 循环神经网络(LSTM和GRU)(1)
  12. java插件安装步骤_eclipse插件安装的四种方法
  13. 第8章 面向对象高级编程与网络编程
  14. Nutch1.2二次开发详细攻略(二)【图文】------Windows平台下Nutch1.2的搭建
  15. 快手小视频批量下载高清无水印软件 快手短视频批量下载高清无水印软件
  16. 花瓣网爬取美女图片 每次20张
  17. nodejs爬虫获取漫威超级英雄电影海报
  18. 关系数据库——关系操作关系模型的完整性
  19. 要么听我的,要么走开(摘自《代码之道》第8章)
  20. 拒酒词――――――社交必备

热门文章

  1. 为什么 OLAP 需要列式存储
  2. Using Graphviz dot for ERDs, network diagrams and more
  3. 大数据能力提升项目| 学生成果展系列之一
  4. 独家 | 在数据科学中需要多少数学技能?(附链接)
  5. 开学综合症有救了!17篇最新AI论文不容错过(附链接)
  6. 教你用PyTorch实现“看图说话”(附代码、学习资源)
  7. 【PySlowFast】Facebook开源算法代码库PySlowFast,轻松复现前沿视频理解模型
  8. 8个流行的Python可视化工具包!!!
  9. 目标检测比赛中的trick
  10. 2020 IEEE冯诺依曼奖得主:Michael Jordan --机器学习领域泰斗级人物