LINUX.ORG.RU

Вопрос по GCC


0

0

Как сделать так, чтобы один C-шный файл юзал другой, а другой наоборот первый? Вот пример, но он на GCC не компилится:

#ifndef __A__ #define __A__

class A; //Здесь выдается ошибка "forward declaration of A"

#include "B.h"

class A { B* b; };

#endif

-----------------------------------------

#ifndef __B__ #define __B__

class B;

#include "A.h"

//Здесь выдается ошибка "undefined type A" class B : public A { };

#endif

anonymous

Сорри, перевод строки куда-то пох*рился, второй класс такой: #ifndef __B__ #define __B__

class B;

#include "A.h"

//Здесь выдается ошибка "undefined type A"

class B : public A { };

#endif

anonymous
()
Ответ на: комментарий от anonymous

>Как сделать так, чтобы один C-шный файл юзал другой, а другой наоборот первый?

А может не надо?

>#include "B.h"

Зачем?



Замени #include "B.h" на class B;

kosmonavt
()
Ответ на: комментарий от kosmonavt

Да, спасибо, замена #include "B.h" на class B помогла. Странно, но тот же самый пример, если класс В не наследовать от А, а просто определить в нем поле типа A*, тогда все будет компилиться, даже и без замены includ-а на forward declaration. Странный он какой-то, GCC этот.

anonymous
()
Ответ на: комментарий от anonymous

Что странного?

Из A.h  после include получался такой код^

class A;
//#included from b.h:
   class B;
   class B : public A { }; // класс A еще не определен, только объявлен
                           // компилятор покане знает даже размера 
                           // базового класса A, поэтому не может
                           // создать производный B
                           // пока класс A не определен, можно использовать только 
                           // A* и A&
// снова A.h:
class A { B* b; };

zaregazza
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.