Class C+中不允许不完整的类型+;

Class C+中不允许不完整的类型+;,class,c++11,c++17,Class,C++11,C++17,我正在尝试重新创建数组的数据类型,以用于实验目的。我创建了一个类“node”,它有两个属性value(int)和nextvalue(node)来保存下一个节点。计划是将多个节点对象链接在一起并创建一个数组。 这是我的密码: class node { public :int value; node nextnode; }; 但是,我在node nextnode行中得到以下错误:不允许不完整的类型 好像它是某种“递归类”,如果它存在的话 我甚至尝试过创建第二个名为“node2”的类

我正在尝试重新创建数组的数据类型,以用于实验目的。我创建了一个类“node”,它有两个属性value(int)和nextvalue(node)来保存下一个节点。计划是将多个节点对象链接在一起并创建一个数组。 这是我的密码:

class node
{
public :int value;
        node nextnode;
};
但是,我在
node nextnode行中得到以下错误:不允许不完整的类型
好像它是某种“递归类”,如果它存在的话

我甚至尝试过创建第二个名为“node2”的类,它与前一个类完全相同,以欺骗编译器int,使其认为该类没有引用自身。 是否有解决方案,或者这是一条死胡同?

与其他语言(例如C#)不同,类始终是值类型,而不是引用。所以一个类不能有同一个类类型的成员(你会得到无限递归和无限大小的类)。还请注意,C++类和结构体是相同的(除了默认访问修饰符)

因此,您需要使用指针:

#include <memory>

class node
{
public:
    int value;
    std::unique_ptr<node> nextnode;
};
#包括
类节点
{
公众:
int值;
std::唯一的下一个节点;
};
与其他语言(例如C#)不同,类始终是值类型,而不是引用。所以一个类不能有同一个类类型的成员(你会得到无限递归和无限大小的类)。还请注意,C++类和结构体是相同的(除了默认访问修饰符)

因此,您需要使用指针:

#include <memory>

class node
{
public:
    int value;
    std::unique_ptr<node> nextnode;
};
#包括
类节点
{
公众:
int值;
std::唯一的下一个节点;
};

对于您的设计,您认为节点的大小是多少?是的,您是对的,它将是无限的。对于您的设计,您认为节点的大小是多少?是的,您是对的,它将是无限的。