这一行有错误。我已经尝试了很多不同的编辑来尝试修复,但我似乎无法做到正确。我正在实现的是一个队列(使用一个列表),这个特定的行是 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/