В С++ возможно ли, чтобы дочерние классы абстрактного класса принимали разные параметры для одних и тех же функций?
Извините, если я недостаточно хорошо сформулировал вопрос, но скажите, что код выглядит примерно так:
Class Parent
{
public:
virtual void Sit() = 0;
}
Class Child1 : public Parent
{
public:
virtual void Sit(obj* chair) override;
}
Class Child2 : public Parent
{
public:
virtual void Sit(obj* bench) override;
}
По сути, мне нужно, чтобы мои объекты наследуются от одного и того же абстрактного класса, но им нужно принимать разные параметры для одних и тех же функций, поскольку они имеют разное поведение, я предполагаю, что что-то подобное возможно, но я не знаю, как именно.
1 ответ
Вы не можете делать то, что пытаетесь сделать, не совсем. Если вы используете
Вы можете заставить Parent::Sit() принимать , и тогда реализации в ваших дочерних классах могут предположить, хотя это довольно опасно.
Если хотя бы все аргументы Sit() наследуются от общего базового класса, то вы можете определить его таким образом. Это немного менее плохо, чем начинать с