从非标量类型“节点*”转换为请求的标量类型“节点”

时间:2014-02-27 20:47:54

标签: 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的指针在此代码之前的部分中有效。一个很好的开始是解释错误信息实际意味着什么,即我是否传递了一个“节点*”,它期待一个“节点”,反之亦然?也许我错过了关于指针的一些信息,或者与堆有关的东西。提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:3)

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

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

从错误消息中可以看出这一点。它告诉您无法从node*转换为node,因为您将obj声明为node。它并不是指你传递的论据。

当然,您根本不能使用new

node obj(item, ptr);