• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数ポインタにvirtual関数を与えたいです)

関数ポインタにvirtual関数を与えたいです

このQ&Aのポイント
  • //関数ポインタについて質問させてください。error C2440: '=' : 'void (__thiscall A::* )(int,int)' から 'void (__cdecl *)(int,int)' に変換できません。というエラーが出ます。どうすればいいのか教えてください。
  • 関数ポインタにvirtual関数を与えたいときに、エラー C2440 が発生し、変換できないというエラーが出ます。どうすれば解決できるでしょうか?
  • 関数ポインタにvirtual関数を与える際に、エラー C2440 が発生します。このエラーを解決するためにはどうすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

× : void (*aaa)(int a,int b); ○ : void (A::*aaa)(int a,int b);

goonagoon
質問者

お礼

お世話になりました。 ありがとうございました。

goonagoon
質問者

補足

回答ありがとうございます。 一応できました。 #include<stdio.h> class A { public: void (A::*aaa)(int a,int b); virtual void test(int a,int b)=0; virtual void test2(int a,int b)=0; void execute1() { aaa=test;//OK } void execute2() { aaa=test2;//OK } void aaacall(int a,int b) { (this->*aaa)(a,b); } }; class B : public A { public: void test(int a,int b) { printf("test a+b=%d",a+b); } void test2(int a,int b) { printf("test2 a-b=%d",a-b); } }; int main() { B b; b.execute1(); b.aaacall(1,2); b.execute2(); b.aaacall(1,2); getchar(); return 0; }

関連するQ&A

専門家に質問してみよう