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