Как вы устанавливаете члены базового класса, используя реализацию оператора присваивания? Если, например, кто-то определяет оператор присваивания в производном классе следующим образом:
(где и colour
, и Colour()
являются членами базового класса, что означает, что строки, указанные ниже, недопустимы)
Derived& Derived::operator=(const Derived& rhs)
{
if (&rhs != this)
{
Colour(rhs.colour); // not allowed
Colour(rhs.Colour()); // not allowed
}
return *this;
}
Каково решение? Есть ли способ связать перегрузки операторов в базе? Делаю ли я что-то вроде...
Derived& Derived::operator=(const Derived& rhs) : Base::operator=(rhs)
...?