Pregunta

¿Qué pasa con TextLayoutTransition? ¿Los punteros de función no se pueden declarar virtuales?

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

Aquí está la clase.

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

Editar: Ligeramente relacionado, y relacionado con Qt, ¿los punteros de función se pueden declarar como ranuras / señales?

¿Fue útil?

Solución

No, no puedes ... no tiene sentido poner virtual en el puntero de una función. Puedes anular una variable.

Otros consejos

Los punteros de función son datos . Los miembros de datos no pueden ser virtuales. Y no pueden tener un " cuerpo " definido a través de {} como en su ejemplo. ¿Qué intentabas hacer con esto?

Tampoco está relacionado con el ejemplo de la pregunta, aunque aparece el mismo mensaje de error al tener el siguiente código:

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

El problema (obvio) es la falta de () después del método get_a.

Espero que ayude a las personas que siguen el enlace al leer el título de la pregunta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top