質問
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の後に()
がないことです。
質問のタイトルを読むときにリンクをたどる人々を支援する希望。
所属していません StackOverflow