2014-02-27 72 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); 
相關問題