2014-11-22 76 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 =新的二叉树(根);