我必须创建简单的List实现。他们希望将struct
放在班级next
的成员Node
之前。为什么会有一个struct
字,没有它会有什么不同?
struct Node{
int value;
struct Node *next;//what is this struct for?
};
struct List{
struct Node *first, *last;
};
答案 0 :(得分:4)
在您的示例中,无需在struct
声明之前使用next
关键字。它通常被认为是C的回归,需要它。在C ++中,这就足够了:
struct Node{
int value;
Node *next;
};
但是,如果您有一个名为Node
的成员,那么您将必须使用struct
或class
:
struct Node{
int Node;
struct Node *next; // struct or class required here
};
您还需要struct
class
来声明尚未定义的类型(前向声明)。例如
struct Foo {
class Bar* bar_; // Bar defined later
};
我使用class
显示它在这种情况下没有任何区别。
答案 1 :(得分:1)
struct
之前无需next
。
那应该是一个指向Node对象的简单指针。