trenger tilgang til klasse Object via Funksjon Pointer - binært søketre Class Creation tilhørende

stemmer
1

Opprette gjennomløping for binært søketre med Rekursjon.

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

Her er funksjonen. Nå er dette åpenbart galt. Denne funksjonen kalles slik:

first.inOrder(print_vals);

første er objektet, og skrive ut Vals er rett og slett en funksjon som skriver ut hva som er dataene i objektet. Det er tre verdier for hvert objekt, data, venstre og høyre. Hvordan kan jeg faktisk få tilgang til disse elementene med funksjonen?

Publisert på 15/10/2008 klokken 21:09
kilden bruker
På andre språk...                            


1 svar

stemmer
3

Det ser ut som kallet til inOrderPtr(this->data)passerer bare datamedlem av treet node til print_valsfunksjonen. Hvis du ønsker å få tilgang til leftog rightelementer, bruke inOrderPtr(*this). Du må endre ulike erklæringer for at dette skal kompilere, for eksempel erklæringer for inOrderPtrog print_vals. Uten å se resten av koden din er det vanskelig å si hva du trenger å endre dem til.

På et annet merke, virker det for meg at du kanskje ønsker å skrive rekursive samtaler mer som dette:

this->left->inOrder(inOrderPtr);

Jeg gjør antagelser om implementeringen, though.

Svarte 15/10/2008 kl. 21:15
kilden bruker

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