一.错误:
struct TreeNode
{
int val;
TreeNode left;
TreeNode right;
};
二.分析原因:
如果在定义class A时,A域的类型是未定义的class A而不是指向class A对象的指针类型,编译器会尝试在编译时分配一块内存给A域,但由于class A的定义还没有出现,因此无法确定A域需要多少空间。这就导致了编译错误。
改用指针可以解决这个问题,因为指针的大小是固定的,与指向的类型无关。在定义class A时,编译器只需要知道A域是一个指针类型,就能正确地分配内存。同时,在实际使用A域时,可以通过对指针进行解引用来访问实际的class A对象。
三.解决措施:
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
};