クラスの演算子を指すポインタをC ++(またはc ++ 0x)で書きたいと思います.AまたはBと言います.それを行う方法はありますか?
もちろん、次のような構文があります
int (A::*_p) ();
しかし、それはこの問題を解決しません。基本クラスを指定せずに、一般的なポインターを作成したい-「演算子関数」のポインターのみ
#include <thread>
#include <iostream>
using namespace std;
class A
{
public:
int operator()()
{
return 10;
}
};
class B
{
public:
int operator()()
{
return 11;
}
};
int main()
{
A a;
int (*_p) ();
_p = a.operator();
cout << _p();
B b;
_p = b.operator();
cout << _p();
}