Указатель на метод в C++
Указатель на метод хранит адрес функции-члена вместе с типом класса, к которому она относится.
Тип пишут как void (Box::*mp)() - имя
класса стоит перед ::*, дальше идет
сигнатура метода. Вызов комбинируют объект
и указатель оператором .*. Запишем
класс, указатель и вызов из main:
#include <iostream>
struct Box {
int size = 0;
void report() {
std::cout << size << "\n";
}
};
int main() {
Box obj{12};
void (Box::*mp)() = &Box::report;
(obj.*mp)();
return 0;
}
В struct Unit добавьте метод
void ping(), печатающий "ok".
Объект Unit и указатель
void (Unit::*fn)() свяжите с
ping и вызовите метод через
.*.