c++ - 请求从非标量类型 "node*"转换为标量类型 "node"

标签 c++ pointers

这一行有错误。我已经尝试了很多不同的编辑来尝试修复,但我似乎无法做到正确。我正在实现的是一个队列(使用一个列表),这个特定的行是 enqueue(int item) 操作的一部分。

node obj = new node (item, <node * pointer>);

构造函数是:

node(int new_data, node * next_node ){
          data = new_data ;
          next = next_node ;
}

我试过这条线:

node * ptr = NULL;
node obj = new node (item, ptr);

但这仍然会给出同样的错误。因为这个节点将是队列中的最后一个节点,所以它不应该指向任何东西(也许我以错误的方式接近它!?)。将指针设置为 NULL 在此代码之前的部分有效。一个好的开始是解释错误消息的实际含义,即我是否传递了一个“节点*”并且它期待一个“节点”,反之亦然?也许我缺少一些关于指针的信息,或者与堆有关的信息。在此先感谢您的帮助。

最佳答案

new 表达式返回指向已分配对象的指针。所以你需要:

node* obj = new node(item, ptr);

从错误消息中可以看出这一点。它告诉您不能从 node* 转换为 node,因为您将 obj 声明为 node .它不是指您传递的参数。

当然,你可以根本不使用 new:

node obj(item, ptr);

关于c++ - 请求从非标量类型 "node*"转换为标量类型 "node",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22080014/

相关文章:

c++ - 如果我只想专门化模板中的一种方法,我该怎么做?

c++ - CMake + qtcreator + MinGW + Debug模式 + Windows 7

c - 为什么 `int *p = (char *) &num' 会导致警告?

c++ - 没有从 "const char"到 "int"的转换

c - 从不同结构类型中的指针向结构指针赋值

c - 我应该如何输入 cast void *?

c++ - 字节顺序标记真的是一个有效的标识符吗?

c++ - a%2或a&1哪个更快?

c - 向函数传递指针的问题

c++ - 如何打印 '%' 符号?