J'ai une fonction de membre dans une classe qui a un rappel, mais le rappel n » t strictement neccessary, donc il a un callback par défaut, qui est vide. Il semble fonctionner très bien, mais je reçois un avertissement gênant:Qu'est-ce que cela signifie: avertissement: la conversion de 'vide (ClassName :: *)()' à 'void (*)()'
warning: converting from ‘void (ClassName::*)()’ to ‘void (*)()’
J'essaie de comprendre ce que cela signifie et comment l'éteindre (ou corriger si je suis vraiment en train de faire quelque chose de mal). Voici un code simple:
class ClassName{
public:
void doSomething(void (*callbackFunction)() = (void(*)()) &ClassName::doNothing){
callbackFunction();
}
void doNothing(){}
};
int main(){
ClassName x;
x.doSomething();
return 0;
}
Note: Si je fais ça (sans que cela coulée explicitement comme void(*)()
):
void doSomething(void (*callbackFunction)() = &ClassName::doNothing)
Je reçois ceci:
main.cpp:3: error: default argument for parameter of type ‘void (*)()’ has type ‘void (ClassName::*)()’
Ohhh. J'aurais dû penser à le rendre statique. Merci. –