2014-11-22 78 views
1

我一直在C++中使用二叉搜索樹編碼賦值,並在編寫我的「主要」方法時遇到此錯誤;C++中的轉換錯誤

91:37: error: conversion from ‘binaryTree*’ to non-scalar type ‘binaryTree’ requested 

91行如下;

binaryTree bt = new binaryTree(root); 

我不明白它有什麼問題,我的實驗室導師也不明白錯誤。

  • 拼寫是完全正確

任何幫助將是巨大的 - 謝謝!

+2

你的實驗室導師真的不理解這個錯誤?聽起來像盲人領導盲人。 – sjdowling 2014-11-22 17:51:50

+0

@sjdowling我只是把它的意思是「我尋求幫助,他們沒有得到它,」抱歉的混亂! – 2014-11-22 17:53:29

回答

2

運營商新返回的值的類型爲binaryTree *。因此,它可以被分配給該類型的對象:

binaryTree *bt = new binaryTree(root); 

爲了調用這個指針,你必須使用運營商->一個methof。例如

bt->deleteTree(); 

還是應該取消引用此指針

(*bt).deleteTree(); 

另一種方法是使用一個參考分配的對象。例如

binaryTree &bt = *new binaryTree(root); 

//... 

delete &bt; 

或者

bt.deleteTree(); 
delete &bt; 
+0

謝謝,但現在我得到錯誤說,「請求成員'刪除'在'bt',這是非班級類型'binaryTree *'」例如對於我所有的方法 – 2014-11-22 17:52:00

+0

@MeganSime這是因爲'bt'是現在是一個指向值的指針,而不是一個值,所以你必須取消引用指針來使用它,或者像'bt-> deleteTree()'或'(* bt).deleteTree()'。 – sjdowling 2014-11-22 17:53:58

+0

@ Megan Sime查看我更新的帖子。 – 2014-11-22 17:56:19

0

new返回一個指針和BT是不是一個指針。

binaryTree *bt = new binaryTree(root); 
+0

重讀,我覺得我可能做了一個建議刪除時出錯。太晚了,現在無法撤消。 – ArtOfWarfare 2014-11-22 18:44:48

0

您正在將指針(binaryTree *)分配給類型爲binaryTree的常規變量。這是行不通的。

而應該做的:

二叉樹* BT =新的二叉樹(根);