besoin d'accéder à la classe Object via la fonction pointeur - Classe Recherche Binary Tree Création connexes

voix
1

Création Traversées pour Binary Recherche Arbre avec récursivité.

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

Voici la fonction. Maintenant, ce qui est évidemment faux. Cette fonction est appelée comme ceci:

first.inOrder(print_vals);

premier est l'objet, et impression vals est tout simplement une fonction qui imprime ce sont les données de l'objet. Il y a trois valeurs pour chaque objet, les données, à gauche, et à droite. Comment puis-je accéder effectivement ces éléments avec la fonction?

Créé 15/10/2008 à 22:09
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
3

On dirait que l'appel inOrderPtr(this->data)passe juste le datamembre du nœud de l' arbre à la print_valsfonction. Si vous souhaitez accéder aux leftet rightéléments, utilisez inOrderPtr(*this). Vous devrez changer diverses déclarations pour que cela de compiler, telles que les déclarations pour inOrderPtret print_vals. Sans voir le reste de votre code , il est difficile de dire ce que vous devez les changer pour.

Sur une autre note, il me semble que vous pouvez écrire les appels récursifs plus comme ceci:

this->left->inOrder(inOrderPtr);

Je fais des hypothèses au sujet de votre mise en œuvre, bien que.

Créé 15/10/2008 à 22:15
source utilisateur

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