История изменений
Исправление eao197, (текущая версия) :
Да уж, пришел неведомо кто, суть задачи рассказать не может, на все разумные замечания огрызается и обзывает желающих помочь телепатами…
Ну раз уж вы хотите извращений, то, пожалуйста.
class A {
private:
static void default_func(A *) { ... };
protected:
using func_ptr = void (*)(A*); // Или какой вам нужен набор аргументов.
virtual func_ptr real_func() const noexcept { return &A::default_func; }
public:
bool check() const noexcept { return &default_func == real_func(); }
...
};
class B : public A {
protected:
static void custom_B_func(A *) { ... };
func_ptr real_func() const noexcept override { return &B::custom_B_func; }
...
};
class C : public A {
... // Нет переопределения real_func.
};
Исходная версия eao197, :
Да уж, пришел неведомо кто, суть задачи рассказать не может, на все разумные замечания огрызается и обзывает желающих помочь телепатами…
Ну раз уж вы хотите извращений, то, пожалуйста.
class A {
private:
void default_func(A *) { ... };
protected:
using func_ptr = void (*)(A*); // Или какой вам нужен набор аргументов.
virtual func_ptr real_func() const noexcept { return &A::default_func; }
public:
bool check() const noexcept { return &default_func == real_func(); }
...
};
class B : public A {
protected:
static void custom_B_func(A *) { ... };
func_ptr real_func() const noexcept override { return &B::custom_B_func; }
...
};
class C : public A {
... // Нет переопределения real_func.
};