2012-04-02 11 views
0

allererst mein Baum aus Knoten besteht, die wie folgt aussehen:eine Hilfsfunktion für eine binäre Suchbaum Copykonstruktor Schreiben

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

Für meine Copykonstruktor ich eine Hilfsfunktion haben, die in der Wurzel geht ich es so nennen (in meinem Copykonstruktor):

root = Helper(base.root); 

Jetzt für den Körper von copyHelper ich für jeden Knoten eine wenig Hilfe mit dem Kopieren des eigentlichen Zeichenfolge benötigen.

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

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

Muss ich irgendetwas anderes in Helper sind, und warum bin ich diesen Fehler bekommen, wenn auf dem Heap einen String zu erstellen?

den Fehler auf der Saite Zeile ist:

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

Warum braucht die Schnur nicht ein neues? – dev6546

Antwort

4

Da die Fehlermeldung besagt, ein Versuch gemacht wird, um eine string* einen string zuzuweisen. Um den Fehler zu beheben:

string newName; 

Es gibt keine Anforderung ist das string Objekt auf dem Heap zu erstellen. Außerdem scheint es keinen Grund zu geben, newName überhaupt zu haben:

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