This:
void traverse(void (*op)(T &)) {
// TODO: Your code goes here
}
- это объявление функции, в котором есть один параметр указателя на тип функции void ( * )(T &)
.
Объявление будет выглядеть более простым, если вместо указателя функциибудет тип функции, например:
void traverse( void op( T & ) ) {
// TODO: Your code goes here
}
Компилятор неявно преобразует тип функции в указатель на тип функции.
This:
void traverse(void (*op)(T &, void *), void *pParam) {
// TODO: Your code goes here
// string *Req = static_cast<string *>(pParam);
// if (*Req == "find city's id") {
// op = this->_pHead;
// };
}
также является объявлением функции с двумя параметрами, первый из которых имеет указатель на тип функции.
Снова вместо указателя функции может быть объявлен параметр типа функции:
void traverse( void op(T &, void *), void *pParam ) {
// TODO: Your code goes here
// string *Req = static_cast<string *>(pParam);
// if (*Req == "find city's id") {
// op = this->_pHead;
// };
}
Это делает объявление более понятным.