c++ - 为什么我不能在同一行中定义两个类的相同类型的成员指针

标签 c++

这段代码会产生如下错误

error: field 'next' has incomplete type 'Node'

class Node {
    public:
        Node(int k, int v) {
            key = k;
            val = v;
        }
    public:
        Node* prev, next;
        int key, val;
};

将 Node* 更改为 int 不会有同样的提示。将 prev 和 next 放在不同的行中可以解决错误。

为什么我不能在同一行中定义两个类的相同类型的成员指针?

最佳答案

星号 (*) 属于变量名。 Node 是数据类型。实际上,您已经定义了:

Node *prev;
Node next;

next前加一个星号,例如*下一步

该错误与这样一个事实有关,即您未能初始化存储在 next 中的 Node 实例。 prev 是一个指针,不需要初始化。

关于c++ - 为什么我不能在同一行中定义两个类的相同类型的成员指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50275872/

相关文章:

c++ - 段错误调用函数

javascript - 为什么添加 Javascript 窗口对象时 Vtable 链接会出现问题?

c# - C++ 性能与 Java/C#

c++ - Quicksort 无法一致地对 100 000 个整数的数据集进行排序

C++ 类表达式必须是可修改的左值

c++ - 内部模板类的递归特化结束

c++ - 想要将 QPushButton 放置到 GraphicView 上...但是没有显示任何按钮?

C++20 从带括号的值列表初始化聚合,不支持内部数组

c++ - 为什么 atomic_flag 默认构造函数未指定状态?

c++ - fatal error LNK1104 : cannot open file 'sfml-system-s-d.lib'