C++头文件重复互相包含,假设有两个类A和B,分别定义在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,代码如下:
//文件A.h中的代码
#pragma once
#include "B.h"
class B;
class A
{
public:
B* b;
};
//文件B.h中的代码
#pragma once
#include "A.h"
class B;
class B
{
public:
A* a;
};
只要预定义一个就OK了
//temp004.h
#ifndef temp004_h
#define temp004_h
#include "temp004_2.h"
int b=1;
extern int a;//仅用来声明
#endif
//temp004_2.h
extern int b;
int a=2;
//temp004.cpp
#include
#include "temp004.h"
using namespace std;
int main()
{
cout<cout<return 0;
}
还有问题的话``60233108
不能相互包含,否则就变成了无限循环了。
用这样的
#ifndef
#define
#endif
这样是防止重复包含,而不能达到互相包含
其实互相包含是重复包含的一种,是不允许的
用这样的
#ifndef
#define
#endif