我需要包含递归类头文件。
#ifndef FOO_H
#define FOO_H
#include "Bar.h"
class Foo {
public:
Bar* barMember;
};
#endif
#ifndef BAR_H
#define BAR_H
#include "Foo.h"
class Bar {
public:
Foo* fooMember;
};
#endif
在这种情况下,我收到错误,如
'class'没有命名类型
考虑到在这种情况下Foo
是包含许多其他类作为成员的主类。但是对于一个成员我需要双向连接。
那我为什么会遇到这样的问题?
答案 0 :(得分:4)
使用前瞻声明:
#ifndef FOO_H
#define FOO_H
class Bar;
class Foo
{
public:
Bar* barMember;
};
#endif
和
#ifndef BAR_H
#define BAR_H
class Foo;
class Bar
{
public:
Foo* fooMember;
};
#endif
您只需要在包含实现的.cpp文件中包含相应的头文件,因此不会存在相互包含。