#include <iostream>
class Pointers {
public:
Pointers(int y)
: m_y(y)
{
/* пусто */
}
double test1(int x) {
return x * m_y;
}
double test2(int x) {
return x + m_y;
}
void run() {
std::cout << "Run: " << (this->*m_meth)(3) << std::endl;
}
void set_method(double (Pointers::*meth)(int x)) {
m_meth = meth;
}
private:
int m_y;
double (Pointers::*m_meth)(int x);
};
int main() {
Pointers p(3);
p.set_method(&Pointers::test1);
p.run();
p.set_method(&Pointers::test2);
p.run();
return 0;
}