necessitem de acesso a classe de objeto via Pointer Função - binário Pesquisa Classe Árvore Criação relacionados

StackOverflow https://stackoverflow.com/questions/206498

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top