la definizione della funzione non dichiara i parametri
-
05-07-2019 - |
Domanda
Cosa c'è che non va in TextLayoutTransition? I puntatori a funzione non possono essere dichiarati virtuali?
LCDWrapper.h:23: error: function definition does not declare parameters
Ecco la lezione.
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;
};
Modifica: Leggermente correlati e relativi a Qt, i puntatori a funzioni possono essere dichiarati come slot / segnali?
Soluzione
No, non puoi ... non ha senso mettere virtuale un puntatore a funzione. Puoi ignorare una variabile.
Altri suggerimenti
I puntatori a funzione sono dati . I membri dei dati non possono essere virtuali. E non possono avere un " body " definito tramite {}
come nel tuo esempio. Cosa stavi cercando di fare con questo?
Inoltre non è correlato all'esempio nella domanda, sebbene si riceva lo stesso messaggio di errore quando si ha il seguente codice:
class myClass
{
public:
get_a { return a; }; // <-- missing () !!!
private:
int a;
};
Il problema (ovvio) è la mancanza di ()
dopo il metodo get_a.
Spero che aiuti le persone a seguire il link quando leggono il titolo della domanda.