引用

冬日里的阳光 头文件循环倚赖问题
.h文件中相互引入各自类的头文件,在.cc中用类的预声明(class yourclass;)可以解决这个问题。

例如:classA和classB的相互调用

//classA.h文件

#ifndef classA_H_
#define classA_H_

#include "classB.h"//引入classB的头文件

calss classA
{
public:
……
void show();
void send();
protected:
classB * classb_;
};
#endif

//cassA.cc文件

#include "classA.h"
class classB;//classB的预声明
void classA::send()
{
classb_->show();
}
void classA::show()
{
cout<<"Hello,this is classA……"<<endl;
}
……
//classB.h头文件

#ifndef classB_H_
#define classB_H_

#include "classA.h"//引入classA的头文件
class classB
{
public:
……
void show();
void send();
protected:
classA *classa_;
};
#endif

//classB.cc文件
#include "classB.h"

class classA; //classA的预声明
void classB::send()
{
classa_->show();
}
void classB::show()
{
cout<<"Hello,this is classB……"<<endl;
}