Question

Quel est le problème avec TextLayoutTransition? Les pointeurs de fonction ne peuvent-ils pas être déclarés virtuels?

LCDWrapper.h:23: error: function definition does not declare parameters

Voici la classe.

class LCDInterface {
    public:

    // Slots
    virtual void TextSetSpecialChars() = 0;
    virtual void LayoutChangeBefore() = 0;
    virtual void LayoutChangeAfter() = 0;
    virtual void TextSpecialCharChanged(unsigned int i) = 0;
    virtual void ChangeLayout() = 0;
    virtual void (*TextLayoutTransition)(Generic<LCDText> *v){}; // line 23
    virtual void TransitionFinished() = 0;
};

Éditer: Est-ce que les pointeurs de fonction peuvent être déclarés en tant que slots / signaux?

Était-ce utile?

La solution

Non, vous ne pouvez pas .. cela n’a aucun sens de mettre virtuel sur un pointeur de fonction. Vous pouvez remplacer une variable.

Autres conseils

Les pointeurs de fonction sont des données . Les membres de données ne peuvent pas être virtuels. Et ils ne peuvent pas avoir un "corps" défini par {} comme dans votre exemple. Qu'essayiez-vous de faire avec cela?

Cela n'est pas non plus lié à l'exemple de la question, même si vous obtenez le même message d'erreur lorsque vous avez le code suivant:

class myClass
{
    public:
        get_a { return a; };  // <-- missing () !!!
    private:
        int a;
};

Le problème (évident) est le manque de () après la méthode get_a.

J'espère que cela aidera les personnes qui suivent le lien à lire le titre de la question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top