为什么需要将 Node 声明为 Node 结构体中的结构体,而不仅仅是 Node 对象?

Jar*_*ter 2 c++ queue struct declaration linked-list

我正在创建堆栈的链表实现。在Node结构中,我有数据成员datanext。我的问题是,为什么数据成员next需要声明为 likestruct Node * next而不仅仅是 like Node *next

template <class T>
class Stack{
    private:
        struct Node{
            T data;
            struct Node *next; //This is what the question is in reference to
        };

        Node *front;
        Node *end;

    public:
};
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 5

在这种情况下可以写Node *next;为“代替” struct Node *next;,并且它不会改变含义。包含该关键字struct是多余的,如果我不得不猜测的话,作者包含它是因为他们习惯于用 C 编写,其中(与 C++ 相比)它可能不会被省略。