错误,不允许类型不完整
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++中,它们是value类型 编辑:您的错误是由于以下事实造成的:当您定义成员变量 类似地,它在Java/C#中也能工作,因为这些语言中的每个变量(减去C# 编辑:请阅读C++和 总之,要分配指针,请执行以下操作。nextNode
时,您仍处于定义node
的中间,因此它是不完整的。node*
将起作用,因为指针只需要前向声明,并且可以处理不完整的类型。struct
和Java原语(都只是有一些组成的指针。new
/delete
中的指针。我预计你很快就会崩溃。:(.还可以看看理解指针的障碍是什么,以及可以做些什么来克服它们?开始。node a;
node b;
a.nextNode = &b; //& operator returns the address of its operand, here b
相关文章:
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- C++从外部类继承的嵌套类;不允许使用不完整的类型
- E0322:不允许使用抽象类类型 " " 的对象
- 为什么C++不允许两个同名的函数/类模板,区别仅在于非类型模板参数(整型)的类型?
- 不允许将SDL_Cursor与unique_ptr:error不完整类型一起使用
- HTTP POST 请求不允许我定义上下文类型
- 内建数组出现不允许的类型不完整错误
- 为什么 std::array 的演绎指南不允许不同的类型?
- 为什么标准不允许通过引用捕获不完整的异常类型?
- 数组错误(不允许类型不完整)
- 为什么函数返回类型中不允许参数推导?
- std::function 中不允许引用返回类型吗?
- 类中不允许使用不完整的类型,但在类模板中允许使用不完整的类型
- 为什么协程不允许使用占位符返回类型?
- 错误消息:不允许抽象类类型 "X" 的对象:纯虚拟"Y"没有覆盖器
- 错误:不允许使用抽象类类型的对象
- 奇怪的不完整类型不允许错误
- 不完整的类型不允许错误
- c++不完全类型不允许在类内部使用
- 不完全类型不允许出现错误和元组