我一直在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