Tuesday, January 8, 2008

Указатель на функцию-член класса

Для уменьшения объема кода и повышения гибкости бывает полезно использовать указатели на функции. Примеров масса, их можно найти, например, у Страуструпа. А вот для указателей на функции-члены мне примеры встречались крайне редко. Чтобы как-то исправить эту ситуацию я предлагаю свой пример использования такого указателя. Надеюсь это поможет вам в вашей работе.

Объявление класса в упрощенном виде выглядит следующим образом:

class MyClass
{
...
void setPointer(int funcNumber);
...
public:
...
void function1();
void function2();
void (MyClass::*pFunction) ();
}

Функция, присваивающая указателю адрес нужной функции может выглядеть так:

void MyClass::setPointer(int funcNumber)
{
switch (funcNumber) {
case 1 :
pFunction = &MyClass::function1;
break;
case 2:
pFunction = &MyClass::function2;
break;
}
}

А сами функции пишем как обычно:

void MyClass::function1()
{
...
}


void MyClass::function2()
{
...
}

No comments: