Ось простенький приклад:
#include < iostream>
using namespace std;
class MyClass
{
public:
MyClass(){}
~MyClass(){}
typedef void (MyClass:: *MY_FUNC_PTR)(int val);
// екземпляр вказівника на функцію класу
MY_FUNC_PTR stateFuncPtr;
void stateWaitFunc(int val)
{
cout < < val < < ". State WAITING function()" < < endl;
}
void stateDoFunc(int val)
{
cout < < val < < ". State DOING function()" < < endl;
}
void someFunk()
{
// присвоюємо вказівник на stateDoFunc функцію
stateFuncPtr = &MyClass::stateDoFunc;
// виклик функції stateDoFunc шляхом звертання до нашого вказівника
(this->*stateFuncPtr)(1);
// присвоюємо вказівник на stateWaitFunc функцію
stateFuncPtr = &MyClass::stateWaitFunc;
// виклик функції stateWaitFunc шляхом звертання до вказівника
(this->*stateFuncPtr)(2);
}
};
int main()
{
MyClass m;
m.someFunk();
// присвоюємо вказівник на stateDoFunc функцію (зовні класу)
m.stateFuncPtr = &MyClass::stateDoFunc;
// виклик функції stateDoFunc шляхом звертання до вказівника
(m.*m.stateFuncPtr)(3);
return 0;
}
Матеріал взято з власного наступання на граблі.
Немає коментарів:
Дописати коментар