在实施三元树时,我对此步骤感到难过:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct tnode *Tptr;
typedef struct node
{
char splitchar;
Tptr lokid,eqkid,hikid;
}Tnode;
int research(Tptr p,char *s)
{
if (!p) return 0;
if (*s<p->
}
int main(){
return 0;
}
当我在p
附近移动鼠标图标时,它会显示红色并显示错误:
pointer to incomplete class type is not allowed
我的问题究竟是什么是不完整的课程?请帮助我,谢谢。
答案 0 :(得分:1)
不完整的类(或类型)是前向声明的类型,但未定义。就像你的tnode
一样。
您可能应该将node
替换为tnode
作为示例中的结构标记,以获得所需内容。
答案 1 :(得分:1)
您已将Tptr
键入为struct tnode *
,但tnode
未定义或甚至未声明。也许您打算将node
结构tnode
命名为?
typedef struct tnode {
...
} Tnode, *Tptr;
此时,Tptr
始终是正确类型的别名,即使您将tnode
的名称更改为其他名称也是如此。
答案 2 :(得分:1)
“不完整的类类型”表明您的编译器认为这是C ++代码而不是C代码,因为C没有类。
注意第5行使Tptr
成为struct tnode *
的名称 - 指向名为“tnode”的结构的指针,而不是“node”而是“tnode”,小写字母t,node。第6行启动一个typedef,然后开始定义一个名为“node”的结构,没有“t”,只是“node”。第11行完成了“struct node”的定义,然后为早期的typedef提供了一个名称:“Tnode”,大写字母T,节点。
现在你有四个不同的名字:Tptr,Tnode,tnode和node。具有小写“t”的那个从未被“完成”,所以它是“不完整类型”(但不是类,因为C没有类)。