У меня есть существующий класс, который объявляет виртуальный метод и определяет реализацию по умолчанию. Теперь я хочу перегрузить этот метод другим параметром, а также дать реализацию по умолчанию. Кроме того, я хочу применить ограничение, согласно которому если первый метод был переопределен подклассом, то второй (перегруженный) виртуальный метод также должен быть переопределен.
Возможно ли это даже внутри С++? Если да, то возможно ли это во время компиляции?
Пример кода:
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
и заставить их реализовать свою версию method(ParamB b)
.
Base
не переопределяютmethod(Param A)
. Если сделать оба метода чисто виртуальными, потребуется выполнить много кода и добавить тривиальные переопределения. - person js_   schedule 13.01.2012