質問

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に関連して、関数ポインターをスロット/シグナルとして宣言できますか?

役に立ちましたか?

解決

いいえ、できません。関数ポインタにvirtualを置くことは意味がありません。変数をオーバーライドできます。

他のヒント

関数ポインタはデータです。データメンバーを仮想にすることはできません。そして、彼らは「体」を持つことはできません。例のように {} で定義されます。これで何をしようとしましたか?

また、質問の例とは関係ありませんが、次のコードを使用すると同じエラーメッセージが表示されます。

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

(明らかな)問題は、メソッドget_aの後に()がないことです。

質問のタイトルを読むときにリンクをたどる人々を支援する希望。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top