C++中类外的函数

Function outside of class in C++

本文关键字:函数 C++      更新时间:2023-10-16

可能重复:
操作员超载超出类

我对C++不太熟悉,但我的任务是创建一个使用大量运算符重载的自定义Vector类。我很难掌握如何做其中一个。该类应提供以下功能:

v3 = v2 * 2.0f;
v3 = 2.0f * v2;

我通过重载*运算符成功地实现了第一个。不过,我不知道第二个该怎么办。我知道我需要再次重载*运算符,但我认为它不应该在我的向量类中。教授解释的那天我没有上课,当我事后和他交谈时,他提到它需要在课外。问题是,我不知道这将如何运作。任何指导都会很棒!

编辑-

@Fede_Reghe这对我来说很有意义,但当我添加它时,我现在从编译器中得到了这个错误:Vector.h:64:错误:将"const Vector"作为"float Vector::operator"的"this"参数传递会丢弃限定符

在标题中,我有这两行引用了*重载。矢量运算符*(浮点);友元矢量运算符*(float,const Vector&);

然后我重载了[],使其返回x、y或z值的浮点值。标题中的内容如下:float运算符[](int);

在课堂之外,我这样定义了friend*重载:

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;
 }

我不完全理解错误信息的含义。

您应该在类外重载运算符,并将其声明为类的友元。例如:

class Vector {
     // ...
     friend Vector operator*(float, Vector);
};
Vector operator*(float num1, Vector num2)
{
    // ...
} 

您需要operator *()的双参数实现。下面是一个使用operator +()进行此操作的示例,您可以对此进行概括。