определение функции не объявляет параметры - PullRequest
1 голос
/ 22 октября 2009

Что не так с 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;
};

Edit: Слегка связанные и связанные с Qt, могут ли функциональные указатели быть объявлены как слоты / сигналы?

Ответы [ 3 ]

4 голосов
/ 22 октября 2009

Функциональными указателями являются data . Члены данных не могут быть виртуальными. И они не могут иметь «тело», определенное через {}, как в вашем примере. Что ты пытался сделать с этим?

4 голосов
/ 22 октября 2009

Нет, вы не можете .. не имеет смысла ставить виртуальный указатель на функцию. Вы не можете переопределить переменную.

0 голосов
/ 06 июня 2013

Также не относится к примеру в вопросе, хотя вы получаете то же сообщение об ошибке, имея следующий код:

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

(Очевидная) проблема - отсутствие () после метода get_a.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...