Имам съществуващ клас, който декларира виртуален метод и дефинира имплементация по подразбиране. Сега искам да претоваря този метод с диференциален параметър и да дам реализация по подразбиране. Освен това искам да наложа ограничението, че ако първият метод е заменен от подклас, тогава вторият (претоварен) виртуален метод също трябва да бъде заменен.
Това дори възможно ли е в 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
и да ги принудя да прилагат своята версия на method(ParamB b)
.
Base
не са заменилиmethod(Param A)
. Когато правите двата метода чисто виртуални, ще трябва да преминете през много код и да добавите тривиални замени. - person js_   schedule 13.01.2012