определение функции не объявляет параметры

StackOverflow https://stackoverflow.com/questions/1605409

  •  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.

Надеюсь, что это поможет людям перейти по ссылке при чтении заголовка вопроса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top