В Perl есть метод UNIVERSAL::can, который вы можете вызвать для любого класса или объекта, чтобы определить, может ли он что-то сделать:
sub FooBar::foo {}
print "Yup!\n" if FooBar->can('foo'); #prints "Yup!"
Скажем, у меня есть указатель базового класса в C++, который может быть любым из множества различных производных классов, есть ли простой способ сделать что-то подобное? Я не хочу ничего трогать в других производных классах, я могу изменить только область в базовом классе, который вызывает функцию, и в одном производном классе, который ее поддерживает.
РЕДАКТИРОВАТЬ: Подождите, теперь это очевидно (не говоря уже о вопросе), я мог бы просто реализовать его в базе, которая возвращает число, представляющее UNIMPLEMENTED, а затем проверить, что возврат не является таким, когда вы его вызываете. Я не уверен, почему я думал о вещах таким сложным образом.
Я также думал, что получу свой класс от другого, который реализовал foo
, а затем посмотрю, сработает ли динамическое приведение к этому классу или нет.