Funktionsdefinition deklarieren keine Parameter
-
05-07-2019 - |
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
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?
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