Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

类相互引用的情况,如果编译不通过的话,参考下面的原则(如果通过的话就没啥管的bushi):

在本文件中,

  • 需要引用某类的成员(数据成员或函数成员,静态或不是静态),才需包含头文件
  • 若只需要使用某类的指针或引用,可以不包含头文件,有一个前置申明即可

举例:A中用到B的成员,B中有A*
B.h

// 仅用到A的指针,不需要包含头文件
class A; // 但是需要前置申明
class B
{
public:
    A* data;
    int Int;
};

A.h

#include "B.h" // 由于用到B的成员,需要包含头文件
class A
{
public:
    int func(B* bp){
        return bp->Int; // 这里用到B的成员
    }
};

评论