class cl{public:cl(){ func = &func1; }int (*func)(int); // указатель на метод классаint func1(int i){return i+1; } // сами методыint func2(int i){return i+2; }int func3(int i){return i+3; }int f(int i){ return (*func)(i); }};
class cl{private: int k0,k1,k2,k3; int (*func)(int); // указатель на метод классаpublic: cl(){ func = &func1; } int setParam(int m0,m1,m2,m3,type){ k0=m0; k1=m1; k2=m2; k3=m4; switch(type){ case 1: func = &func1; break; case 2: func = &func2; break; case 3: func = &func3; break; } } int func1(int i){return i+k0-k1; } // сами методы int func2(int i){return i+k1-k2; } int func3(int i){return i+k2-k3; } int getValue(int i){ return (*func)(i); }};void main(){ cl *ob1 = new cl(); ob1->setParam(1,2,3,4,1); cl *ob2 = new cl(); ob2->setParam(10,20,30,40,2); cl *ob3 = new cl(); ob3->setParam(100,200,300,400,3); cout<<ob1->getValue(1)<<endl; cout<<ob2->getValue(2)<<endl; cout<<ob3->getValue(3)<<endl;}
#include <iostream>class cl{private: int k0, k1, k2, k3; int (cl::*func)(int);public: cl() : func (&cl::func1) {} void setParam (int m0, int m1, int m2, int m3, int type) { k0 = m0; k1 = m1; k2 = m2; k3 = m3; switch (type) { case 1: func = &cl::func1; break; case 2: func = &cl::func2; break; case 3: func = &cl::func3; break; } } int func1 (int i); int func2 (int i); int func3 (int i); int getValue (int i);};int cl::func1 (int i){ return i + k0 - k1;}int cl::func2 (int i){ return i + k1 - k2;}int cl::func3 (int i){ return i + k2 - k3;}int cl::getValue (int i){ return (this ->* func)(i);}int main(){ cl * ob1 = new cl(); ob1 -> setParam (1, 2, 3, 4, 1); cl * ob2 = new cl(); ob2 -> setParam (10, 20, 30, 40, 2); cl * ob3 = new cl(); ob3 -> setParam (100, 200, 300, 400, 3); std::cout << ob1 -> getValue (1) << '\n'; std::cout << ob2 -> getValue (2) << '\n'; std::cout << ob3 -> getValue (3) << '\n';}
int cl::getValue (int i){ return (this ->* func)(i);}