C++ 两个类互相调用
总所周知,我们想要调用一个类,一定要添加他的头文件。例如,class A 调用class B,
在class A 头文件中,这样子就可以了。如:
A.h
#ifndef A_H
#define A_H
#include "B.h"
class A
{
public:A();B b;
};#endif
但是,如果我想class A 调用class B , class B 调用class A呢,如果使用A的头文件包含B的头文件,B的头文件包含A的头文件,这样是否可行?
a.h
#ifndef A_H
#define A_H
#include "b.h"
class A
{
public:A();B b;
};
#endif // A_H
b.h
#ifndef B_H
#define B_H
#include "a.h"
class B
{
public:B();A a;
};
#endif // B_H
编译出错
b.h:8: error: 'A' does not name a type
所以,这样不行的。
---------------------下面才是正确的办法----------------------------------
直接上代码:
a.h
#ifndef A_H
#define A_H
class B;
class A
{
public:A();B *b;
};
#endif // A_H
a.cpp
#include "a.h"
#include "b.h"
A::A()
{
}
为什么在a.cpp中include b.h,因为需要调用b的接口。
b.h
#ifndef B_H
#define B_H
#include "a.h"
class B
{
public:B();A a;
};
#endif // B_H
还有一种办法,在A,B类头文件中相互引用头文件,将A或者B设计为单例模式。
C++ 两个类互相调用相关推荐
- php 两个类 相互调用_如何在 PHP 和 Laravel 中使用 Traits
事实上,PHP 作为一门编程语言存在的问题之一,就是你只能使用单继承.这意味着一个类只能从另一个类中继承.例如,可能希望从几个不同的类继承方法,以防止代码重复.在 PHP 5.4 中 一个新的语言特性 ...
- Cocos Creator两个类相互引用(调用)
如果两个类相互引用,脚本加载阶段就会出现循环引用,循环引用将导致脚本加载出错: ///Game.js var Item = require("Item"); var Game = ...
- php 命名空间不能继承,PHP两个类使用同一个命名空间,无法相互调用
创建了两个类,C和D,都属于同一个namespace:func,在D的构造函数中实例化C并调用C里的cc方法,报找不到func下的C类. //C.php namespace func; class C ...
- cocos 时间函数需要什么引用_Cocos Creator两个类相互引用(调用)
如果两个类相互引用,脚本加载阶段就会出现循环引用,循环引用将导致脚本加载出错: ///Game.js var Item = require("Item"); var Game = ...
- 两个类相互包含引用的问题--类前向声明
在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { int i; B b; } clas ...
- 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
文章目录 前言 一.Groovy 类中调用 Groovy 脚本 1.参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 2.创建 Binding 对象并设置 a ...
- 【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )
文章目录 一.Groovy 类中调用 Groovy 脚本 1.创建 GroovyShell 对象并执行 Groovy 脚本 2.代码示例 二.完整代码示例 1.调用者 Groovy 脚本的类 2.被调 ...
- Spring@Cacheable注解在类内部调用失效的问题
如图所示,getRecomendGoogs方法里面调用findImgUrlByName方法,在findImgUrlByName方法上使用@Cacheable注解的时候,并没有走缓存. 要解决这个问题, ...
- [转载] 整理下java中stringBuilder和stringBuffer两个类的区别
参考链接: Java中的StringBuffer类 StringBuilder和StringBuffer这两个类在动态拼接字符串时常用,肯定比String的效率和开销小,这是因为String的对象不会 ...
最新文章
- 2021年3月12日 北京格灵深瞳Java开发实习面试(一面)
- Bugku——Web——矛盾
- 新手入门 keil MDK5 建立STM32工程
- 利用计算机提高数学课堂教学,计算机技术在数学课堂教学中的应用微探
- action mutation 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
- 十天学Linux内核之第七天---电源开和关时都发生了什么
- 360路由器刷openwrt后设置wifi中继
- 计算机管理的服务列表,Windows
- 面部识别数据研究:43年,100个数据集
- 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记...
- vtkSuperquadricSource:创建以原点为中心的多边形超二次曲面
- Python之进程+线程+协程(进程的本质 与 threading线程模块)
- qml入门学习(四):附加信号Component.onCompleted和Component.onDestruction
- java selenium click_按钮单击selenium java
- 201612-2 工资计算
- Android RxBinding
- AIX双机调整DB2配置
- 无法远程桌面netmeeting
- 怎么修改PDF文件大小,PDF怎么裁剪页面
- service mesh:istio全
热门文章
- Jmeter源码分析(一)
- 计算机无线网络服务禁用了怎么办,无线网络禁用启用无效怎么办_无线禁用后启用不了的解决方法...
- esp分区创建 linux_Linux 基础知识: GPT分区基础知识及如何在GPT分区上安装WIN7
- 判断Linux load的值是否过高
- C#与SAP接口对接
- 批量处理作业调度工具Taskctl的Kettle转换作业类型的使用(soap服务驱动)
- Orbbec Inside | 奥比中光真3D刷脸门锁方案
- freeCodeCamp----arithmetic_arranger练习
- 类似淘宝详情页SKU页面
- 企业财务制度二--会计科目名称和编号(一)1122 应收利息(转载)