繁体   English   中英

错误,类型不完整

[英]error, incomplete type not allowed

#include "passenger.h"
class node
{
public:
    passenger dataItem;
    node nextNode;
};

为什么在尝试创建类型为其驻留的类的变量时出现不允许的不完整类型错误?

通过过程尝试遵循编译器。

什么是sizeof(node)

要修复,请考虑使用指向节点的指针。

class node
{
public:
    passenger dataItem;
    node * nextNode;
};

看完代码后,看起来您来自Java / C#背景,这实际上意味着您实际上确实希望使用指针模仿这些语言的引用

请记住,对象是那些语言中的引用类型 ,而它们是C / C ++中的值类型 区别在于, node nextNode Java / C#中的下一个节点,而对于C / C ++,它是对象本身。

编辑 :您的错误是由于以下事实引起的:当您定义成员变量nextNode ,您仍在定义node的中间,因此它是不完整的 node*将起作用,因为指针只需要一个前向声明,并且对于不完整的类型也可以。

同样,它可以在Java / C#中工作,因为那些语言中的每个变量(减去C# struct和Java原语)都是具有某种组成的指针。

编辑:请仔细阅读C ++中的指针和new / delete我希望您很快就会崩溃或两次。.:: ..还请看一下理解指针的障碍是什么,可以采取哪些措施来克服它们?开始。

总而言之,要分配一个指针,请执行以下操作。

node a;
node b;

a.nextNode = &b; //& operator returns the address of its operand, here b

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM