Указатель на метод класса и его подклассов без шаблонов
Есть функция, которая принимает указатель на метод класса Object
void f(void(Object::*_function)(int))
{
//...
}
Возможно ли сделать так, чтобы она принимала не только методы самого Object, но и его подклассов, не используя шаблонов ?
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Можно скастовать указатель на метод потомка к нужному типу:
f(static_cast<void(Object::*)(int)>(&Derived::foo));
Естественно, когда будете вызывать метод через этот указатель, ссылка/указатель на Object, которые будут стоять слева от .*/->*, должны указывать на дочерний класс, а то будет неопределенное поведение.