我希望有一个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
为多个值节点创建单个标记节点的正确方法是什么?
答案 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);
}