递归类头包括

时间:2014-12-04 23:54:05

标签: c++ unix recursion header-files

我需要包含递归类头文件。

“foo.h中”

#ifndef FOO_H
#define FOO_H
#include "Bar.h"

class Foo {
public:
    Bar* barMember;
};
#endif

“Bar.h”

 #ifndef BAR_H
 #define BAR_H
 #include "Foo.h"
 class Bar {
 public:
     Foo* fooMember;
 };
 #endif

在这种情况下,我收到错误,如

  

'class'没有命名类型

考虑到在这种情况下Foo是包含许多其他类作为成员的主类。但是对于一个成员我需要双向连接。

那我为什么会遇到这样的问题?

1 个答案:

答案 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文件中包含相应的头文件,因此不会存在相互包含。