Utilisation invalide de non-fonction membre statique en c++
Je suis ce exemple. Mais quand je compile, il renvoie une erreur:
Invalide l'utilisation de la non-fonction membre statique
à la ligne
void(Machine:: *ptrs[])() =
{
Machine::off, Machine::on
};
J'ai essayé d'ajouter static
à void on();
à la classe
class Machine
{
class State *current;
public:
Machine();
void setCurrent(State *s)
{
current = s;
}
static void on(); //I add static here ...
static void off(); //and here
};
Mais il se plaint de ce que
Utilisation invalide de membre de la Machine::courant en fonction membre statique
Pouvez-vous m'aider à résoudre ce problème?
OriginalL'auteur GAVD | 2016-12-26
Vous devez vous connecter pour publier un commentaire.
À la différence des fonctions membres statiques ou fonctions libres, non-fonctions membres statiques ne convertir implicitement de membre des pointeurs de fonction.
(l'emphase est mienne)
Si vous avez besoin d'utiliser
&
explicitement à prendre l'adresse de la non-fonctions membres statiques (c'est à dire non-membre statique des pointeurs de fonction). par exemple,Si vous déclarer comme fonction membre statique, vous devez changer le type de
ptrs
(à la gamme des non-membre des pointeurs de fonction). Notez que pour la fonction membre statique, c'est bien de ne pas utiliser&
explicitement. par exemple,Explication ajouté.
OriginalL'auteur songyuanyao