potrzebują dostępu do klasy obiektu za pomocą wskaźnika funkcji - binarne drzewo poszukiwań klasy tworzenia Powiązany

głosy
1

Tworzenie z przechodzenia do binarne drzewo poszukiwań z rekursji.

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

Oto funkcja. Teraz jest to oczywiście błędne. Funkcja ta nazywa się tak:

first.inOrder(print_vals);

Pierwszym z nich jest przedmiotem, a Vals Wydruk jest po prostu funkcją, która drukuje, co jest dane w obiekcie. Istnieją trzy wartości dla każdego obiektu, danych, w lewo iw prawo. Jak mogę faktycznie dostęp do tych elementów z funkcji?

Utwórz 15/10/2008 o 22:09
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
3

Wygląda na to wywołanie inOrderPtr(this->data)przechodzi tylko dataczłonek węzła drzewa do print_valsfunkcji. Jeśli chcesz uzyskać dostęp do lefti rightelementy, należy użyć inOrderPtr(*this). Trzeba będzie zmienić różne deklaracje, aby to skompilować, takie jak deklaracje dla inOrderPtri print_vals. Nie widząc resztę kodu trudno powiedzieć, co trzeba zmienić ich.

Na innym uwaga, wydaje mi się, że warto napisać wywołań rekurencyjnych więcej tak:

this->left->inOrder(inOrderPtr);

Robię założenia dotyczące implementacji, choć.

Odpowiedział 15/10/2008 o 22:15
źródło użytkownik

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