У меня есть абстрактный класс A
и чисто виртуальная функция toDoOrNotToDo
. У меня есть два подкласса: A1
и A2
, так что A1
нуждается в параметре const int x
toDoOrNotToDo
, чтобы выполнить свою работу, а A2
не нуждается в этом параметре для выполнения этой работы.Две функции переопределения той же чистой виртуальной функции с разными параметрами?
Но если я пишу
class A2 : public A {
public:
int toDoOrNotToDo() const override;
};
Это, очевидно, будет жаловаться:
'INT A2 :: toDoOrNotToDo() Const' отмечены переопределение, но не отменяет
I может просто написать:
class A {
public:
virtual int toDoOrNotToDo(const int x) const = 0;
virtual ~A();
};
class A1 : public A {
public:
int toDoOrNotToDo(const int) const override;
};
class A2 : public A {
public:
int toDoOrNotToDo(const int) const override;
};
Но тогда в A2::toDoOrNotToDo
У меня есть параметр, который мне не нужен.
Как я могу улучшить дизайн?
Вместо этого вы можете использовать параметр по умолчанию. Пока эти функции не имеют одинаковой сигнатуры, они никогда не будут соответствовать виртуальному наследованию. –