2014-02-27 45 views
0

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

_basic - 功课--_您是不是要安装一个downvote吸引? –

+0

请注意您遇到的错误!如果你没有得到他们的英文,只是使用谷歌或类似的一些糟糕的翻译(甚至更好地与[ideone](http://ideone.com/)或类似的重现)。 –

+0

将为将来的问题记住这一点。感谢大家,我只是想让人们知道:1)我没有经验,所以先进的解决方案对我的水平是不合适的,2)我看到其他人不知道他们的问题与家庭作业有关,应该指出。 – user1920043

回答

3

A new -expression返回一个指向分配对象的指针。所以你需要:

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

这应该是相当明显的错误信息。这是说你不能将node*转换为node,因为你宣称objnode。这不是指你传递的论点。

当然,你可能只是不能使用new都:

node obj(item, ptr); 
相关问题