我正在尝试创建一个结构,该结构必须包含相同结构类型的数据。这可能吗?
我可以定义一个指向相同类型对象的指针,但不能定义结构本身。
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;
}
谢谢
答案 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”相同的方式不是对象,而是指向对象的位置。