用于保存相同结构类型的数据的结构

时间:2019-04-06 22:00:49

标签: c++11 struct

我正在尝试创建一个结构,该结构必须包含相同结构类型的数据。这可能吗?

我可以定义一个指向相同类型对象的指针,但不能定义结构本身。

struct Node
{
    vector<string> state;
    struct Node *prev;
    int id;
    Node()
    {
    }

    ~Node()
    {
    }
};

这是可能的。但是我不能定义如下。执行过程中出现错误,提示“不允许使用不完整的类型”。

struct Node
{
    vector<string> state;
    struct Node prev;
    int id;
    Node()
    {
    }

    ~Node()
    {
    }
};

这可能吗?如果是,该怎么办才能消除错误?

我已经看到在Java中使用类是可能的,

public class Vertex implements Comparable{

    public Pallet[] bins;
    public int cost;
    public Vertex parent;
}

谢谢

1 个答案:

答案 0 :(得分:1)

否。

struct Node
{
    vector<string> state;
    struct Node prev;
    int id;
    Node()
    {
    }

    ~Node()
    {
    }
};

此代码不起作用,因为类型Node不知道要为Node类型的对象分配多少空间。类型仍在定义中。因此,它尚不知道。

但是,我可以使用指针!!

是的。指针不是保存对象,而是保存对象的内存位置。编译器知道Node是一种数据类型,但是它不需要知道要分配多少,因为稍后将手动进行分配。

但是,我可以用Java做到!!

Java中的引用与C ++指针(What is the difference between a pointer and a reference variable in Java? )不同。但是,出于多种目的,您可以将它们视为相同。请记住,当您在Java类中创建成员时,就是在创建引用。 (How can a class have a member of its own type, isn't this infinite recursion?)。 Java参考将引用(指向)实际对象。 Java类中的“父”成员不是对象本身,而是对对象的引用。 C ++类中与“ * prev”相同的方式不是对象,而是指向对象的位置。