typedef struct问题

com*_*lez 2 c++ struct

我是c ++的新手,如何在下面编写代码(编译没有语法错误)?

typedef struct _PersonA{
    char name[128];
    LPPersonB rel;
}PersonA, *LPPersonA;

typedef struct _PersonB{
    char name[128];
    LPPersonA rel;
}PersonB, *LPPersonB;
Run Code Online (Sandbox Code Playgroud)

请不要问我为什么需要这样做,因为这只是解释我的问题的一个例子.

GMa*_*ckG 5

你必须转发声明:

struct _PersonB;

typedef struct _PersonA{
char name[128];
_PersonB* rel; // no typedef
}PersonA, *LPPersonA;

typedef struct _PersonB{
char name[128];
LPPersonA rel;
}PersonB, *LPPersonB;
Run Code Online (Sandbox Code Playgroud)

那就是说,这非常......丑陋.首先,C++中不需要typedef:

struct PersonB;

struct PersonA
{
    char name[128];
    PersonB* rel;
};

struct PersonB
{
    char name[128];
    PersonA* rel;
};
Run Code Online (Sandbox Code Playgroud)

这也有消除你坏名字的副作用:_PersonA.此名称是为编译器保留的,因为它以下划线后跟大写字母开头.

就是这样.顺便说一下,隐藏在typedef背后的指针通常被认为是坏的.