Чтобы проверить, существует ли функция foo
в базовом классе, скажем, Foo
, напишите
sizeof(&Foo::foo);
в версии дочернего класса foo
. Идея состоит в том, что компиляция не удастся, если базовый класс Foo::foo
отсутствует, и имеет благоприятный эффект, если он есть.
Конечно, это имеет недостатки - вы не можете описать их, например, по перегрузкам. Кроме того, static
функции и переменные-члены с похожим именем также будут совпадать.