定义了两个头文件
//a.h
#include"b.h"
class a
{
…
b *b1;
};
//=========================
//b.h
#include "a.h"
class b
{
…
a *a1;
};
这样子是编译不了;解决方式如下:
解决方法一:(试过好用)
不需要这么包含,除非必要,
如果你只是想在另外一个类中定义一个类的成员变量,只要在头文件中加入 class 类名;
然后要在.cpp文件中再包含这个头文件就可以了。(这是必须的,不然找不到),因为这种方式只是在头文件中包含了该类,在源文件中还不包含,这样做只是为了避免相互包含报错。
//a.h
class b; //由原来的#include "b.h"变为class b;(或者相反)
class a
{
…
b *b1;
};
//=========================
//b.h
#include "a.h"
class b
{
…
a *a1;
};
第二种解决方案:
加入宏定义
#ifndef __A_H__
#define __A_H__
class b;
class a
{
...
}
#endif
b.h
#ifndef __B_H__
#define __B_H__
class a;
class b
{
...
}
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)