2014-11-22 4 views
1

Я кодировал назначение в C++, используя двоичные деревья поиска, и при кодировании моего «основного» метода наткнулся на эту ошибку;Ошибка конверсии в C++

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

Строка 91 следующая:

binaryTree bt = new binaryTree(root); 

, и я не могу понять, что с ним не так, мой учитель-лаборатория тоже не понимает ошибку.

  • правописание, безусловно, правильно

Любая помощь будет здорово - спасибо!

+2

Ваш репетитор действительно не понимает эту ошибку? Похоже, что слепой ведет слепой. – sjdowling

+0

@sjdowling Я просто сказал, что «я попросил о помощи, и они этого не поняли», извините за замешательство! –

ответ

2

Значение, данные оператора new имеет тип binaryTree *. Таким образом, он может быть назначен на объект этого типа:

binaryTree *bt = new binaryTree(root); 

Для вызова methof для этого указателя вы должны использовать оператор ->. Например

bt->deleteTree(); 

Или вы должны разыменовать этот указатель

(*bt).deleteTree(); 

Другой способ заключается в использовании ссылку на выделенный объект. Например

binaryTree &bt = *new binaryTree(root); 

//... 

delete &bt; 

Или

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

спасибо, но теперь я получаю ошибки, говоря «запрос для члена« deleteTree »в« bt », который относится к классу типа« binaryTree * », например, для всех моих методов. –

+0

@MeganSime. Это потому, что' bt' является теперь указатель на значение, а не значение, поэтому вам нужно разыменовать указатель, чтобы использовать его либо как 'bt-> deleteTree()', либо '(* bt) .deleteTree()'. – sjdowling

+0

@Megan Sime Посмотреть последнее обновление. –

0

новый возвращает указатель и BT не является указателем.

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

Перечитывая, я чувствую, что, возможно, ошибка при рекомендации удаления. Слишком поздно, не могу отменить это сейчас. – ArtOfWarfare

0

Вы назначаете указатель (binaryTree *) на регулярную переменную типа binaryTree. Это не сработает.

Вы должны вместо этого сделать:

BinaryTree * Ы = новый BinaryTree (корень);

Смежные вопросы