Вы также можете использовать предварительную декларацию в этом случае:
// AUnit.h
class BClass;
class AClass : public TObject
{
__published
BClass * B;
};
// BUnit.h
#include <AUnit.h>
class BClass : public TObject
{
__published
AClass *A;
};
Нет никакой разницы в сценарии, если они оба находятся в одном файле, потому что #include
ничего не делает, кроме вставки включенного файла (это действительно просто замена текста). Это точно так же. После предварительной обработки BUnit.h
, выше будет выглядеть так:
class BClass;
class AClass : public TObject
{
__published
BClass * B;
};
class BClass : public TObject
{
__published
AClass *A;
};