我一直在C++中使用二叉搜索樹編碼賦值,並在編寫我的「主要」方法時遇到此錯誤;C++中的轉換錯誤
91:37: error: conversion from ‘binaryTree*’ to non-scalar type ‘binaryTree’ requested
91行如下;
binaryTree bt = new binaryTree(root);
我不明白它有什麼問題,我的實驗室導師也不明白錯誤。
- 拼寫是完全正確
任何幫助將是巨大的 - 謝謝!
我一直在C++中使用二叉搜索樹編碼賦值,並在編寫我的「主要」方法時遇到此錯誤;C++中的轉換錯誤
91:37: error: conversion from ‘binaryTree*’ to non-scalar type ‘binaryTree’ requested
91行如下;
binaryTree bt = new binaryTree(root);
我不明白它有什麼問題,我的實驗室導師也不明白錯誤。
任何幫助將是巨大的 - 謝謝!
運營商新返回的值的類型爲binaryTree *
。因此,它可以被分配給該類型的對象:
binaryTree *bt = new binaryTree(root);
爲了調用這個指針,你必須使用運營商->
一個methof。例如
bt->deleteTree();
還是應該取消引用此指針
(*bt).deleteTree();
另一種方法是使用一個參考分配的對象。例如
binaryTree &bt = *new binaryTree(root);
//...
delete &bt;
或者
bt.deleteTree();
delete &bt;
謝謝,但現在我得到錯誤說,「請求成員'刪除'在'bt',這是非班級類型'binaryTree *'」例如對於我所有的方法 – 2014-11-22 17:52:00
@MeganSime這是因爲'bt'是現在是一個指向值的指針,而不是一個值,所以你必須取消引用指針來使用它,或者像'bt-> deleteTree()'或'(* bt).deleteTree()'。 – sjdowling 2014-11-22 17:53:58
@ Megan Sime查看我更新的帖子。 – 2014-11-22 17:56:19
new返回一個指針和BT是不是一個指針。
binaryTree *bt = new binaryTree(root);
重讀,我覺得我可能做了一個建議刪除時出錯。太晚了,現在無法撤消。 – ArtOfWarfare 2014-11-22 18:44:48
您正在將指針(binaryTree *)分配給類型爲binaryTree的常規變量。這是行不通的。
而應該做的:
二叉樹* BT =新的二叉樹(根);
你的實驗室導師真的不理解這個錯誤?聽起來像盲人領導盲人。 – sjdowling 2014-11-22 17:51:50
@sjdowling我只是把它的意思是「我尋求幫助,他們沒有得到它,」抱歉的混亂! – 2014-11-22 17:53:29