在struct的成员之前,“struct”和缺少“struct”字有什么区别

时间:2014-05-06 17:30:11

标签: c++ struct

我必须创建简单的List实现。他们希望将struct放在班级next的成员Node之前。为什么会有一个struct字,没有它会有什么不同?

struct Node{
    int value;
    struct Node *next;//what is this struct for?
};


struct List{
    struct Node *first, *last;
};

2 个答案:

答案 0 :(得分:4)

在您的示例中,无需在struct声明之前使用next关键字。它通常被认为是C的回归,需要它。在C ++中,这就足够了:

struct Node{
    int value;
    Node *next;
};

但是,如果您有一个名为Node的成员,那么您必须使用structclass

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对象的简单指针。