Указатели на функции-члены классов дополнение
Указатели на функции-члены классов дополнение
В дополнение к этой заметке стоит сказать про случай объявления typedef внутри класса:
class Test { public: //объявляем тип указателя: typedef void (Test::* pToFunc)( ); //указатель на функцию pToFunc m_func; void foo( ) { cout << "Test::foo called" << endl; } };
Тогда вызов функции через public переменную m_func будет менее тривиальным:
int main() { //создаем объект класса Test Test test; //инициализируем указатель test.m_func = &Test::foo; //с помощью объекта вызываем функцию-член, обратите внимание на синтаксис ( test.*test.m_func)( ); // Можно и по указателю: Test *test2 = new Test; test2->m_func = &Test::foo; ( test2->*test2->m_func)( ); delete test2; }
22 февраля 2011 (Обновление: 11 мар 2011)