什么是创建静态标记节点的正确方法

时间:2018-05-26 15:04:50

标签: c++ tree

我希望有一个Sentinel节点的单个实例,其他节点可以将其用作构造函数的一部分。我试过了

struct Node;
static Node sentinel(0);
struct Node{
    Node(int val): next(&sentinal), val(val) {}
    Node *next;
    int val;
};

int main() {
    Node *node = new Node(42);
}

这不起作用,因为

'Node sentinel' has initializer but incomplete type 

为多个值节点创建单个标记节点的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使您的哨兵成为Node的静态成员。

struct Node{
    Node(int val): next(&sentinel), val(val) {}
    Node *next;
    int val;
    static Node sentinel;
};

Node Node::sentinel(0);

int main() {
    Node *node = new Node(42);
}