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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top