引用

冬日里的阳光 的 头文件循环倚赖问题
在.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;
}