potřebují přístup k třídě objektu pomocí ukazatel funkce - binární vyhledávací strom Class vytvoření Souvisí

hlasů
1

Vytváření traversals pro strom binárního vyhledávání s rekurze.

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

Zde je funkce. Teď je to samozřejmě špatně. Tato funkce se nazývá takto:

first.inOrder(print_vals);

Prvním z nich je předmět, a tisknout Vals je prostě funkce, která tiskne, co jsou data v objektu. Existují tři hodnoty pro každý objekt, data, vlevo a vpravo. Jak mohu ve skutečnosti přístup k těmto předměty s funkcí?

Položena 15/10/2008 v 22:09
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
3

Vypadá to, že volání inOrderPtr(this->data)prochází jen datačlen uzlu stromu do print_valsfunkce. Pokud byste chtěli získat přístup k lefta rightprvky, používat inOrderPtr(*this). Budete muset změnit na různá prohlášení, v pořadí pro tuto kompilaci, jako je například prohlášení o inOrderPtra print_vals. Aniž by viděl zbytek kódu je těžké říci, co je třeba změnit tak, aby.

Na další notu, zdá se mi, že budete chtít psát rekurzivní volání více takhle:

this->left->inOrder(inOrderPtr);

Dělám předpoklady o implementaci, ačkoli.

Odpovězeno 15/10/2008 v 22:15
zdroj uživatelem

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