一.错误:
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;
};
四.如何指针进行解引用来访问实际的class A对象
要通过指针来访问实际的class A对象,可以使用解引用运算符*。假设指针变量为ptrA,则可以通过以下方式访问实际的class A对象:
ClassA *ptrA; // 假设指针变量为ptrA
ClassA objA; // 假设有一个ClassA对象objA
ptrA = &objA; // 将指针ptrA指向objA
// 通过指针ptrA访问objA的成员变量和成员函数
(*ptrA).member_variable = 10;
(*ptrA).member_func();
ptrA->member_variable = 10;
ptrA->member_func();
标签:member,TreeNode,变量,objA,结构,ptrA,class,指针
From: https://www.cnblogs.com/hanyryyds/p/17274141.html