Поскольку класс C
включает только указатель на класс A
, ему не требуется полное определение для A
или B
(чтоне использует);так что достаточно просто заявления , объявляющего A
классом:
Ch
class A; // Declare that A is a class - then we can have a pointer to it...
class C {
private:
A* myA;
}
Класс B
нуждается в определении C
, потому что он включает экземпляр из C
;и, подобно классу C
, простое объявление A
как класса (как это уже сделано в C.h
) будет делать:
Bh
#include "C.h" // Note: This header already declares "A" as a class!
class B {
private:
A* myA;
C myC;
};
Class A
потребности определение из B
, поскольку оно содержит экземпляр из B
. Но обратите внимание, что B.h
уже включает C.h
:
А *
#include "B.h"
class A {
private:
B myB;
};
Обратите внимание, что любые другие файлы, которые используют один или несколько из A
, B
и C
нужно только включить заголовок A.h
, так как он сам включает остальные.