Frage

Was ist los mit TextLayoutTransition? Kann Funktionszeiger nicht virtuell deklariert werden?

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

Hier ist die Klasse.

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;
};

Edit: Leicht im Zusammenhang, und in Bezug auf Qt, können Zeiger als Schlitze / Signale deklariert werden Funktion

War es hilfreich?

Lösung

Nein, kann man nicht .. es macht keinen Sinn, auf einen Funktionszeiger virtuellen zu setzen. Sie können eine Variable außer Kraft setzen.

Andere Tipps

Funktionszeiger sind Daten . Datenelemente können nicht virtuell sein. Und sie können nicht einen „Körper“ durch {} definiert haben, wie in Ihrem Beispiel. Was wollten Sie mit diesem?

tun

Auch nicht auf das Beispiel in der Frage verbunden, wenn Sie die gleiche Fehlermeldung erhalten, wenn Sie den folgenden Code aufweist:

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

Das (offensichtlich) Problem ist der Mangel an () nach der Methode get_a.

Hoffnung, dass die Menschen über den Link beim Lesen des Titels der Frage.

hilft
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top