определение функции не объявляет параметры
-
05-07-2019 - |
Вопрос
Что не так с TextLayoutTransition? Могут ли указатели функций не быть объявлены виртуальными?
LCDWrapper.h:23: error: function definition does not declare parameters
Вот класс.
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;
};
Редактировать: Слегка связанные и связанные с Qt, могут ли функциональные указатели быть объявлены как слоты / сигналы?
Решение
Нет, вы не можете .. не имеет смысла ставить виртуальный указатель на функцию. Вы можете переопределить переменную.
Другие советы
Указатели функций - это данные . Члены данных не могут быть виртуальными. И они не могут иметь "тело" определяется через {}
, как в вашем примере. Что ты пытался сделать с этим?
Также не относится к примеру в вопросе, хотя вы получаете то же самое сообщение об ошибке, имея следующий код:
class myClass
{
public:
get_a { return a; }; // <-- missing () !!!
private:
int a;
};
(Очевидной) проблемой является отсутствие ()
после метода get_a.
Надеюсь, что это поможет людям перейти по ссылке при чтении заголовка вопроса.