Код: Выделить всё
class Vector
{
public:
Vector(const std::vector &elements);
static Vector add(const Vector &v1, const Vector &v2);
Vector Vector::operator+(const Vector &v) const
{
return add(*this, v);
}
Vector &Vector::operator+=(const Vector &v)
{
*this = add(*this, v);
return *this;
}
float operator[](size_t index) const;
private:
std::vector _elements;
}
Код: Выделить всё
class Vector3 : public Vector
{
public:
Vector3(float x, float y, float z);
};
Моим решением было переопределить операторы в производном классе следующим образом: :
Код: Выделить всё
Vector3 Vector3::operator+(const Vector3 &v) const
{
Vector res = Vector::operator+(v);
return Vector3(res[0], res[1], res[2]);
}
Vector3 &Vector3::operator+=(const Vector3 &v)
{
Vector res = Vector::operator+=(v);
*this = Vector3(res[0], res[1], res[2]);
return *this;
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... ited-class
Мобильная версия