c++ 中如果两个文件互相包含,其语法应该是怎样

来源:百度知道 编辑:UC知道 时间:2024/06/09 11:24:56
各位大虾,我是一个编程的初学者,现在有个问题,请大虾帮忙

我有2个C++文件,在头文件定义中互相包含,那么,语法应该是怎样的呢?
比如,2个文件 分别是[A.h,A.cpp],[B.h,B.cpp]
其头文件分别如下

A.h:
#ifndef AH
#define AH

#include "B.h"
....
#endif
--------------------------
B.h:
#ifndef BH
#define BH

#include "A.h"
....
#endif

这样,编译通不过。

附:问题由来
我在工程中定义了一个类,进行某种数据操作,(A)
然后,在工程中我定义了一个全局的工具类(B)
B类中含有一些静态的常用方法,比如读写文件什么的,其中有个静态方法就是读取文件,然后返回 A类的一个具体对象
而在A类中,我又需要B类的一些静态方法对数据进行分析

所以,出现了2个头文件互相包含的情况!
刚才的那2个可以编译,但下面的是不行的

B.h

class B{
public :
const static A* getA();
const static int ss = 0;
};

----------
A.cpp

A::A(){
int k = B::ss;
}

在A.h里加上class B;
或者在B.h里加上class A;
这叫做预声明.

在其中某个类的h文件中声明一下另一个类而不是include另一个类就可以了

换句话说,在A类的h文件里这样写
A.h:
#ifndef AH
#define AH

class B; //#include "B.h"
....
#endif

然后在A类的cpp文件里这样写
A.cpp:

#include "A.h"
#include "B.h"

...

B类的处理也一样

即可

从来没有见过会相互包含的,这样会产生错误