bisogno di accedere a Object Class via Puntatore Funzione - Cerca albero binario della classe di creazione correlati

voti
1

Creazione di Attraversamento di Binary Search Tree with ricorsione.

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

Ecco la funzione. Ora, questo è ovviamente sbagliato. Questa funzione viene chiamata in questo modo:

first.inOrder(print_vals);

primo è l'oggetto, e vals stampa è semplicemente una funzione che stampa ciò che è i dati nell'oggetto. Ci sono tre valori per ogni oggetto, di dati, di sinistra e destra. Come posso effettivamente accedere a tali elementi con la funzione?

È pubblicato 15/10/2008 alle 22:09
fonte dall'utente
In altre lingue...                            


1 risposte

voti
3

Sembra che la chiamata a inOrderPtr(this->data)passa solo il datamembro del nodo della struttura alla print_valsfunzione di. Se si desidera accedere alle lefte rightelementi, utilizzare inOrderPtr(*this). Si dovrà cambiare varie dichiarazioni in modo che questo per compilare, come ad esempio le dichiarazioni di inOrderPtre print_vals. Senza vedere il resto del codice è difficile dire che cosa è necessario cambiare loro.

In un'altra nota, mi sembra che si potrebbe desiderare di scrivere le chiamate ricorsive più simile a questo:

this->left->inOrder(inOrderPtr);

Sto facendo ipotesi circa l'implementazione, però.

Risposto il 15/10/2008 a 22:15
fonte dall'utente

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