Можно ли определить / подтвердить, что если одна виртуальная функция будет переопределена, другой тоже переопределяется?

У меня есть существующий класс, который объявляет виртуальный метод и определяет реализацию по умолчанию. Теперь я хочу перегрузить этот метод другим параметром, а также дать реализацию по умолчанию. Дополнительно я хочу установить ограничение, что , если первый метод был переопределен подклассом , то второй (перегруженный) виртуальный метод также должен быть переопределен .

Возможно ли такое даже внутри C ++? Если да, возможно ли это во время компиляции?

Пример кода:

class ParamA {};
class ParamB {};

class Base
{
public:
    virtual void method(ParamA a)
    {
        // default behavior
    }
    virtual void method(ParamB b)
    {
        // default behavior
    }
}

class Derived : public Base
{
public:
    virutal void method(ParamA)
    {
        // special behavior
    }
}

Моя цель - обнаружить классы типа Derived и заставить их реализовать свою версию метода (ParamB b) .

6
задан js_ 13 January 2012 в 13:28
поделиться