#include<iostream>
using namespace std;
class a
{
public:
void add(int x)
{
cout<<x+x<<endl;
}
void mult(int x)
{
cout<<x*x<<endl;
}
typedef void (a::*fptr)(int);
fptr retFuncP(char ch)
{
if(ch=='+')
{
return &a::add;
}
else
{
return &a::mult;
}
}
};
int main()
{
a objA;
void (a::*fptr)(int) = objA.retFuncP('+');
(objA.*fptr)(3);
cin.ignore();
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIGEKewpwdWJsaWM6CiAgICB2b2lkIGFkZChpbnQgeCkKICAgIHsKICAgICAgICBjb3V0PDx4K3g8PGVuZGw7CiAgICB9CiAgICB2b2lkIG11bHQoaW50IHgpCiAgICB7CiAgICAgICAgY291dDw8eCp4PDxlbmRsOwogICAgfQogICAgdHlwZWRlZiB2b2lkIChhOjoqZnB0cikoaW50KTsKICAgIGZwdHIgcmV0RnVuY1AoY2hhciBjaCkKICAgIHsKICAgICAgICBpZihjaD09JysnKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICZhOjphZGQ7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAmYTo6bXVsdDsKICAgICAgICB9CiAgICB9Cn07CmludCBtYWluKCkKewogICAgYSBvYmpBOwogICAgdm9pZCAoYTo6KmZwdHIpKGludCkgPSBvYmpBLnJldEZ1bmNQKCcrJyk7CiAgICAob2JqQS4qZnB0cikoMyk7CiAgICBjaW4uaWdub3JlKCk7Cn0=