我是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)
请不要问我为什么需要这样做,因为这只是解释我的问题的一个例子.
你必须转发声明:
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背后的指针通常被认为是坏的.