Вы должны форвард объявить:
struct _PersonB;
typedef struct _PersonA{
char name[128];
_PersonB* rel; // no typedef
}PersonA, *LPPersonA;
typedef struct _PersonB{
char name[128];
LPPersonA rel;
}PersonB, *LPPersonB;
Тем не менее, это очень ... безобразно. Во-первых, нет необходимости в typedef в C ++:
struct PersonB;
struct PersonA
{
char name[128];
PersonB* rel;
};
struct PersonB
{
char name[128];
PersonA* rel;
};
У которого также есть побочный эффект избавления от вашего дурного имени: _PersonA
. Это имя зарезервировано для компилятора, поскольку оно начинается с подчеркивания, за которым следует заглавная буква.
И это все. Между прочим, прятать указатели за typedef обычно считается плохим.