нужен доступ к классу объекта с помощью функции Pointer - бинарное дерево поиска класса Creation, относящиеся

голоса
1

Создание обходов для двоичного дерева поиска с помощью рекурсии.

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);

Первый объект, и печать Vals это просто функция, которая печатает что данные в объекте. Есть три значения для каждого объекта, данные, влево и вправо. Как я на самом деле получить доступ к этим элементам с помощью функции?

Задан 15/10/2008 в 22:09
источник пользователем
На других языках...                            


1 ответов

голоса
3

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

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

this->left->inOrder(inOrderPtr);

Я делаю предположение о вашей реализации, однако.

Ответил 15/10/2008 в 22:15
источник пользователем

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