可能是重复问题:
类外运算符重载
我不太擅长C++,但被分配创建一个使用大量运算符重载的自定义向量类。 我很难理解如何完成其中之一。 该类应提供以下功能:
v3 = v2 * 2.0f;
v3 = 2.0f * v2;
我通过重载*运算符成功实现了第一个,但我不确定如何完成第二个。我知道我需要再次重载*运算符,但我认为它不应该在我的向量类中。有一天我缺席了教授讲课的日子,之后我和他谈论时他提到这需要在类外进行。问题是我不知道这将如何工作。任何指导都将是很好的!
编辑 -
@Fede_Reghe 这对我来说是有道理的,但当我添加它时,现在编译器给我返回这个错误: Vector.h:64: error: passing ‘const Vector’ as ‘this’ argument of ‘float Vector::operator’ discards qualifiers
在头文件中,我有这两行代码,它们涉及到*的重载。 Vector operator * (float); friend Vector operator*(float, const Vector&);
然后我重载了[],以便返回x、y或z值的浮点数。在头文件中看起来像这样: float operator [] (int);
在类外,我定义了如下的友元*重载:
Vector operator * (float f,const Vector& v2)
{
float newX = v2[0] * f;
float newY = v2[1] * f;
float newZ = v2[2] * f;
Vector newVector(newX, newY, newZ);
return newVector;
}
我不完全理解这个错误信息的含义。