benötigen Zugriff auf Klassenobjekt über Funktionspointer - Binary Search Tree-Klasse Creation Related

stimmen
1

Erstellen von Überquerungen für binären Suchbaum mit Rekursion.

void inOrder(void (*inOrderPtr)(T&)) 
{ 
    if(this->left != NULL) 
        inOrder((*inOrderPtr)(this->left)); 
    inOrderPtr(this->data); 
    if(this->right != NULL) 
        inOrder((*inOrderPtr)(this->right)); 
} 

Hier ist die Funktion. Nun ist dies offensichtlich falsch. Diese Funktion wird wie folgt aufgerufen:

first.inOrder(print_vals);

zuerst ist das Objekt, und Druck vals ist einfach eine Funktion, die druckt, was die Daten in dem Objekt. Es gibt drei Werte für jedes Objekt, Daten, links und rechts. Wie greife ich eigentlich diese Elemente mit der Funktion?

Veröffentlicht am 15/10/2008 um 22:09
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
3

Es sieht aus wie der Aufruf von inOrderPtr(this->data)gerade das ist vorbei dataMitglied des Baumknoten auf die print_valsFunktion. Wenn Sie die zugreifen möchten leftund rightElemente verwenden inOrderPtr(*this). Sie müssen verschiedene Erklärungen ändern , um dies zu, wie die Erklärungen zu kompilieren inOrderPtrund print_vals. Ohne den Rest des Codes zu sehen , ist es schwer zu sagen , was Sie sie ändern müssen.

Auf einer anderen Anmerkung, so scheint es mir, dass Sie die rekursive Aufrufe eher wie dieses schreiben möchten:

this->left->inOrder(inOrderPtr);

Ich mache Annahmen über die Implementierung, though.

Beantwortet am 15/10/2008 um 22:15
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more