нужен доступ к объекту класса через указатель на функцию - Создание двоичного дерева поиска, связанного с классом

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

Вопрос

Создание обходов для бинарного дерева поиска с рекурсией.

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

Вот эта функция.Теперь это явно неправильно.Эта функция вызывается следующим образом:

first.inOrder(print_vals);

во-первых, это объект, а print vals - это просто функция, которая печатает данные, содержащиеся в объекте.Для каждого объекта существует три значения: data, left и right.Как мне на самом деле получить доступ к этим элементам с помощью функции?

Это было полезно?

Решение

Это похоже на призыв к inOrderPtr(this->data) проходит ли просто data элемент узла дерева к print_vals функция.Если вы хотите получить доступ к left и right элементы, использующие inOrderPtr(*this).Вам придется изменить различные объявления, чтобы это могло скомпилироваться, например объявления для inOrderPtr и print_vals.Не видя остальной части вашего кода, трудно сказать, на что вам нужно их изменить.

С другой стороны, мне кажется, что вы, возможно, захотите написать рекурсивные вызовы более похожими на это:

this->left->inOrder(inOrderPtr);

Однако я делаю предположения относительно вашей реализации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top