【发布时间】:2011-02-23 16:38:07
【问题描述】:
class Node
{
string name;
Node previous;
};
Error: Node::previous uses "Node" which is being defined.
我怎样才能让它在 C++ 中工作?它在 C# 中工作。
编辑:
为什么Node* previous 有效?
【问题讨论】:
-
我按照大家的建议使用了指针。有用!但为什么呢?
-
指针的大小是已知的。因为您是按值声明 Node,所以编译器需要知道要保留多少空间。但是该类仍在定义中,因此这是不可能的。
-
在 C# 中,Node 类型的变量不是节点对象,而是对此类节点对象的引用。这种隐式间接在 C++ 中不存在。如果要在 C++ 中进行间接寻址,则必须显式使用指针。这是一个重要的区别,您必须了解这一点。