#include "passenger.h"
class node
{
public:
passenger dataItem;
node nextNode;
};
为什么在尝试创建其类型是它所在的类的变量时,我会得到一个不完整的类型不允许错误?
#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