C ++メンバー関数への関数ポインターを使用してメンバー関数を呼び出す必要がありますが、コンパイルエラーが発生しました
te5.cc:22:14: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘fp (...)’, e.g. ‘(... ->* fp) (...)’
b.*fp(100);
これがコードスニペットです。それを機能させる方法はありますか?
#include <stdio.h>
#include <string>
#include <stdio.h>
#include <string.h>
class A {
public:
void dum1(int a) { printf("A::dum1(%d)\n", a);}
virtual void dum(int a) { printf("A::dum(%d)\n", a);};
};
class B : public A {
public:
B() {
}
void dum(int a) { printf("B::dum(%d)\n", a);}
};
typedef void (A::*RUNFUNC)(int a);
RUNFUNC fp = &A::dum; //, &A::dum};
int main (int argc, char *argv[]) {
B b;
b.*fp(100);
return 0;
}
b.*fp(100);
構文が間違っているので、そうする必要があります(.*
優先順位がより低いため()
)
(b.*fp)(100);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加