#include <iostream>
class SomeClass
{
private:
double x1,x2;
public:
SomeClass(double x1, double x2) : x1(x1), x2(x2) {}
double result;
double Func1(double y)
{
return x1*y;
}
double Func2(double (SomeClass::*f)(double), double z)
{
return (this->*f)(z);
}
void get_result()
{
result = Func2(&SomeClass::Func1, x2);
}
};
int main()
{
SomeClass sc(7, 4);
sc.get_result();
std::cout << sc.result << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpjbGFzcyBTb21lQ2xhc3MgCnsKIHByaXZhdGU6CiAgICBkb3VibGUgeDEseDI7CgogcHVibGljOgogICAgU29tZUNsYXNzKGRvdWJsZSB4MSwgZG91YmxlIHgyKSA6IHgxKHgxKSwgeDIoeDIpIHt9CiAgICBkb3VibGUgcmVzdWx0OwoKICAgIGRvdWJsZSBGdW5jMShkb3VibGUgeSkKICAgIHsKICAgICAgICByZXR1cm4geDEqeTsKICAgIH0KCiAgICBkb3VibGUgRnVuYzIoZG91YmxlIChTb21lQ2xhc3M6OipmKShkb3VibGUpLCBkb3VibGUgeikKICAgIHsKICAgICAgICByZXR1cm4gKHRoaXMtPipmKSh6KTsKICAgIH0KCiAgICB2b2lkIGdldF9yZXN1bHQoKQogICAgewogICAgICAgIHJlc3VsdCA9IEZ1bmMyKCZTb21lQ2xhc3M6OkZ1bmMxLCB4Mik7CiAgICB9Cgp9OwppbnQgbWFpbigpCnsKICAgIFNvbWVDbGFzcyBzYyg3LCA0KTsKICAgIHNjLmdldF9yZXN1bHQoKTsKICAgIHN0ZDo6Y291dCA8PCBzYy5yZXN1bHQgPDwgJ1xuJzsKCn0K