Написание вспомогательной функции для конструктора копирования бинарного дерева поиска - PullRequest
0 голосов
/ 02 апреля 2012

Прежде всего, мое дерево состоит из узлов, которые выглядят так:

struct Node 
{ 
    string name;
    Node *left; //points to the left child        
    Node *right; //points to the right child    
}; 

Для моего конструктора копирования у меня есть вспомогательная функция, которая проходит в корне, я называю это так (в моемконструктор копирования):

 root = Helper(base.root);

Теперь для тела copyHelper мне нужна небольшая помощь с копированием фактической строки для каждого узла.

    Node* newNode = new Node; 
    string newName = new string; 
    newName = other->name;
    newNode->name = newName;

    newNode->left = Helper(other->left); 
    newNode->right = Helper(other->right); 

Нужно ли что-либо включатьеще в Helper, и почему я получаю эту ошибку при создании строки в куче?

Ошибка в строке:

Error   1   error C2440: 'initializing' : cannot convert from 'std::string *' to 'std::basic_string<_Elem,_Traits,_Ax>'

1 Ответ

4 голосов
/ 03 апреля 2012

Как говорится в сообщении об ошибке, делается попытка назначить string* для string. Чтобы исправить ошибку:

string newName;

Нет необходимости создавать объект string в куче. Кроме того, кажется, нет никаких причин иметь newName вообще:

Node* newNode = new Node; 
if (newNode)
{
    newNode->name  = other->name;
    newNode->left  = Helper(other->left); 
    newNode->right = Helper(other->right);
}
...