necessitem de acesso a classe de objeto via Pointer Função - binário Pesquisa Classe Árvore Criação relacionados
-
03-07-2019 - |
Pergunta
A criação de percursos para Binary Pesquisa Árvore com recursão.
void inOrder(void (*inOrderPtr)(T&))
{
if(this->left != NULL)
inOrder((*inOrderPtr)(this->left));
inOrderPtr(this->data);
if(this->right != NULL)
inOrder((*inOrderPtr)(this->right));
}
Aqui é a função. Agora, este é obviamente errado. Esta função é chamada como esta:
first.inOrder(print_vals);
primeira é o objeto, e imprimir vals é simplesmente uma função que imprime o que são os dados no objeto. Existem três valores para cada objeto, dados, esquerda e direita. Como faço para realmente acessar esses itens com a função?
Solução
Parece que a chamada para inOrderPtr(this->data)
está passando apenas o membro data
do nó de árvore para a função print_vals
. Se você gostaria de acessar os elementos left
e right
, uso inOrderPtr(*this)
. Você terá que mudar várias declarações para que este a compilação, tais como as declarações para inOrderPtr
e print_vals
. Sem ver o resto do seu código é difícil dizer o que você precisa para alterá-los para.
Em outra nota, parece-me que você pode querer escrever as chamadas recursivas mais como esta:
this->left->inOrder(inOrderPtr);
Eu estou fazendo suposições sobre sua implementação, no entanto.