necesita acceso al objeto de clase a través del puntero de función - Creación de clase de árbol de búsqueda binaria

votos
1

Creando recorridos para el árbol de búsqueda binaria con recursión.

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

Aquí está la función. Ahora esto es obviamente incorrecto. Esta función se llama así:

first.inOrder(print_vals);

primero está el objeto, y print vals es simplemente una función que imprime lo que son los datos en el objeto. Hay tres valores para cada objeto, datos, izquierda y derecha. ¿Cómo accedo a esos elementos con la función?

Publicado el 15/10/2008 a las 22:09
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
3

Parece que la llamada a inOrderPtr(this->data)está pasando solo el datamiembro del nodo de árbol a la print_valsfunción. Si desea acceder a los elementos lefty right, use inOrderPtr(*this). Deberá cambiar varias declaraciones para que se compile, como las declaraciones para inOrderPtry print_vals. Sin ver el resto de su código, es difícil decir a qué debe cambiarlo.

En otra nota, me parece que es posible que desee escribir las llamadas recursivas más como esta:

this->left->inOrder(inOrderPtr);

Estoy haciendo suposiciones acerca de su implementación, sin embargo.

Respondida el 15/10/2008 a las 22:15
fuente por usuario

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