很抱歉打扰您,我是 c 语言的新手,我需要一些帮助:我尝试创建一个结构,其中包含相同结构类型的元素(例如树中的节点树,它可以有子节点)。这是我到目前为止的代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct vectorObject vectorObject;
struct vectorObject{
int value; //Value of node
int hasChildren; //1 if it has and 0 if not
int level; //0 for leaf, 1 for leaf parent, 2 for parent of parent, etc...
vectorObject leftSon;
vectorObject rightSon;
};
vectorObject *listObjetos;
vectorObject *priorityQueue;
int main(void) {...}
问题是我不断收到此错误
field 「leftSon」 has incomplete type
我不知道该怎么办。在java中,您可以创建一个类,并且该类可以将其自身作为对象,因为您正在使用对象,但这里我不知道会发生什么。请你帮助我好吗?非常感谢您,抱歉打扰您。
最佳答案
在 C 中(与 Java 不同),默认值不是对象引用。因此,像您所做的那样声明一个对象,编译器想知道它的完整大小和组成 - 这在声明时不可用(因为您的定义是递归的)。
解决这个问题的方法是显式使用对象引用。在 C 中,这是通过使用指针来完成的。这样,编译器就知道所声明的对象的大小,因为它知道指针的大小(这是固定的)。它愉快地继续完成定义,此时整个对象的大小和组成都是已知的。
struct vectorObject{
int value; //Value of node
int hasChildren; //1 if it has and 0 if not
int level; //0 for leaf, 1 for leaf parent, 2 for parent of parent, etc...
vectorObject* leftSon;
vectorObject* rightSon;
};
关于c - 结构的不完整类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001352/