nevoie de acces la clase de obiecte prin intermediul indicator de funcție - binar de căutare copac Clasa de creare conexe

voturi
1

Crearea de traversari pentru binar de căutare copac cu recursivitate.

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

Aici este funcția. Acum, acest lucru este în mod evident greșit. Această funcție se numește așa:

first.inOrder(print_vals);

în primul rând este obiectul, iar Vals de imprimare este pur și simplu o funcție care imprimă ceea ce este datele din obiectul. Există trei valori pentru fiecare obiect, date, stânga și dreapta. Cum pot accesa de fapt acele elemente cu funcția?

Întrebat 15/10/2008 la 22:09
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
3

Se pare ca apelul să inOrderPtr(this->data)se trece doar datamembru al nodului arborelui la print_valsfuncția. Dacă doriți să accesați leftși rightelementele, utilizați inOrderPtr(*this). Va trebui să schimbe diferite declarații pentru ca acest lucru să compileze, cum ar fi declarațiile de inOrderPtrși print_vals. Fără a vedea restul de cod este greu de spus ce trebuie să le schimbați la.

Într-o altă notă, mi se pare că s-ar putea dori să scrie apelurile recursive mai mult ca acest lucru:

this->left->inOrder(inOrderPtr);

Fac presupuneri cu privire la implementarea, totuși.

Publicat 15/10/2008 la 22:15
sursa de către utilizator

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