У меня есть класс с operator*
, принимающим в качестве аргумента скаляр, который позволяет мне выполнять умножение экземпляра моего класса на скаляр. Я хотел бы иметь возможность умножить скаляр на экземпляр моего класса (в обратном порядке с тем же результатом). Как я могу это сделать?
Вот пример:
class Vector3d
{
public:
Vector3d(double x, double y, double z) {
v[0] = x; v[1] = y; v[2] = z;
}
template<typename T>
Vector3d operator*(const T s) const {
return( Vector3d( v[0] * s, v[1] * s, v[2] * s));
}
//protected: example purpose
double v[3];
};
main()
{
double scalar = 2.0;
Vector3d vector(1.0,2.0,3.0);
Vector3d v2 = vector*scalar;
//This is the operation I want to be able to perform !
//Vector3d v3 = scalar*vector;
return 0;
}
Я пытался реализовать это, как мы делаем с оператором ostream<<
, но безуспешно ...
template<typename T>
Vector3d operator*(T& s, const Vector3d &v)
{
return( Vector3d( v[0] * s, v[1] * s, v[2] * s));
}