#include "passenger.h"
class node
{
public:
passenger dataItem;
node nextNode;
};
Run Code Online (Sandbox Code Playgroud)
为什么在尝试创建其类型为其所在类的变量时会出现不完整类型不允许错误?
尝试遵循编译器的整个过程。
什么是sizeof(node)。
要修复此问题,请考虑使用指向节点的指针。
class node
{
public:
passenger dataItem;
node * nextNode;
};
Run Code Online (Sandbox Code Playgroud)
看到你的代码后,看起来你来自 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2565 次 |
| 最近记录: |