Ich habe eine Mitgliedsfunktion in einer Klasse, die einen Rückruf hat, aber der Rückruf ist nicht unbedingt notwendig, so dass es einen Standardrückruf hat, der leer ist. Es scheint gut zu funktionieren, aber ich bekomme eine lästige Warnung:
warning: converting from ‘void (ClassName::*)()’ to ‘void (*)()’
Ich versuche herauszufinden, was es bedeutet und wie man es ausschalten kann (oder es reparieren, wenn ich wirklich etwas falsch mache). Hier ist ein einfacher Code:
class ClassName{
public:
void doSomething(void (*callbackFunction)() = (void(*)()) &ClassName::doNothing){
callbackFunction();
}
void doNothing(){}
};
int main(){
ClassName x;
x.doSomething();
return 0;
}
Hinweis: Wenn ich dies tue (ohne es explizit als void(*)()
):
void doSomething(void (*callbackFunction)() = &ClassName::doNothing)
Ich verstehe das:
main.cpp:3: error: default argument for parameter of type ‘void (*)()’ has type ‘void (ClassName::*)()’