Указатель на метод класса и его подклассов без шаблонов

Есть функция, которая принимает указатель на метод класса Object

void f(void(Object::*_function)(int))
{
   //...
}

Возможно ли сделать так, чтобы она принимала не только методы самого Object, но и его подклассов, не используя шаблонов ?


Ответы (1 шт):

Автор решения: HolyBlackCat

Можно скастовать указатель на метод потомка к нужному типу:

f(static_cast<void(Object::*)(int)>(&Derived::foo));

Естественно, когда будете вызывать метод через этот указатель, ссылка/указатель на Object, которые будут стоять слева от .*/->*, должны указывать на дочерний класс, а то будет неопределенное поведение.

→ Ссылка