У меня есть функция, которая берет указатель на функцию и применяет его к списку.Его прототип выглядит следующим образом:
void applyList(List *, void applyFunc(void *));
Теперь я хочу предоставить функцию, которая печатает элемент в списке.Поскольку я не изменяю элемент списка, функция печати выглядит следующим образом:
void printNode(const void *nodeData){
Data *dPtr=(Data*)nodeData;
printf("%s", dPtr->str );
}
//Usage
applyList(list, printNode);
Однако я получил ошибку компилятора, говорящую
expected ‘void (*)(void *)’ but argument is of type ‘void (*)(const void *)’
Я не хочу добавлять const
к apply
прототипу, потому что я мог бы предоставить некоторую функцию, которая изменяет данные.Любое предложение о том, как справиться с этой ситуацией?