Заголовок рекурсивного класса включает [дубликаты]

0

Мне нужно включить рекурсивные заголовочные файлы класса.

"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 является основным классом, который включает в себя множество других классов в качестве членов. Но с одним членом мне нужно иметь двунаправленную связь.

Так почему у меня такие проблемы?

Теги:
recursion
header-files

1 ответ

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, содержащие реализации, поэтому не будет взаимных включений.

  • 0
    Да, спасибо .. Вы действительно сэкономили мои часы, я так измучен ... Еще раз спасибо
  • 0
    О, нет, опять же, я не знаю, что это дает мне много ошибок. Как Форвард декларация ................. Я не знаю, что делать ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню