Как правильно использовать указатель на функцию в обходе связанного списка - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь вызвать функцию, которая просматривает односвязный список, увеличивая каждую запись данных на единицу (записи данных шаблонизируются, но в данном случае типа char).

Как правильно вызвать мою функцию visit (), чтобы выполнить это?

Мой текущий вызов в связанном списке с именем sl - sl.visit ((IncreaseByOne) (c));

Я пытался использовать * перед вызовом incrementByOne и возиться с () '.

' '' c ++

template <class T>
void increaseByOne(T& x) {
   x++;
}

'' '

'' 'c ++

template <class T>
void SortedList_LL<T>::visit(void(*fp)(T& data)) {
    Node<T> *q;
    T prev;
    q = list.getHead();

   for (q; q; q = q->next) {
      prev = q->entry;
      (*visit)(q->entry);
      cout << "Value " << prev << " incremented to " << q->entry << endl;
    }
}

' ''

Все записи данных (в настоящее время типа char) должны быть увеличены на 1. Я получаю сообщение об ошибке «main.cpp»: В функции 'int main ()': main.cpp: 81: 31: ошибка: недопустимое использование пустого выражения sl.visit ((IncreaseByOne) (c)); "

...