У меня есть функция-член в классе, который имеет обратный вызов, но обратный вызов не является строго необходимым, поэтому он имеет обратный вызов по умолчанию, который является пустым. Вроде нормально работает, но я получаю досадное предупреждение:
warning: converting from ‘void (ClassName::*)()’ to ‘void (*)()’
Я пытаюсь выяснить, что это значит и как его отключить (или исправить, если я действительно что-то делаю неправильно). Вот простой код:
class ClassName{
public:
void doSomething(void (*callbackFunction)() = (void(*)()) &ClassName::doNothing){
callbackFunction();
}
void doNothing(){}
};
int main(){
ClassName x;
x.doSomething();
return 0;
}
Примечание. Если я это сделаю (без явного приведения его к типу void(*)()
):
void doSomething(void (*callbackFunction)() = &ClassName::doNothing)
Я получаю это:
main.cpp:3: error: default argument for parameter of type ‘void (*)()’ has type ‘void (ClassName::*)()’