нужен доступ к объекту класса через указатель на функцию - Создание двоичного дерева поиска, связанного с классом
-
03-07-2019 - |
Вопрос
Создание обходов для бинарного дерева поиска с рекурсией.
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);
Однако я делаю предположения относительно вашей реализации.