La definición de la función no declara parámetros
-
05-07-2019 - |
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?
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.