类内运算符重载报错:参数过多

When operator+ is defined inside class, left operand of operator is current instance. So, to declare a overload of operator+ you have 2 choices
inside class, with only one parameter which is right operand
outside of class, with two parameters, left and right operands.
Choice 1: outside class

class Vector
{
private:
    double i;
    double j;
    double k;
public:
    Vector(double _i, double _j, double _k)
    {
        i = _i;
        j = _j;
        k = _k;
    }

    Vector& operator+=(const Vector& p1)
    {
        i += p1.i;
        j += p1.j;
        k += p1.k;
        return *this;
    }

    //Some other functionality...


};

Vector operator+(const Vector& p1, const Vector& p2)
{
    Vector temp(p1);
    temp += p2;
    return temp;
}

Choice 2: inside class

class Vector
{
private:
    double i;
    double j;
    double k;
public:
    Vector(double _i, double _j, double _k)
    {
        i = _i;
        j = _j;
        k = _k;
    }

    Vector& operator+=(const Vector& p1)
    {
        i += p1.i;
        j += p1.j;
        k += p1.k;
        return *this;
    }



    Vector operator+(consr Vector & p2)
    {
        Vector temp(*this);
        temp += p2;
        return temp;
    }

};

https://stackoverflow.com/questions/35943537/error-c2804-binary-operator-has-too-many-parameters-compiling-with-vc-120

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,129评论 0 10
  • 9月27日的生日花,孔雀仙花。 孔雀仙花为仙人掌科的多肉类植物。也是个喜欢阳光的家伙,在墨西哥的沙洲地带最多,爱好...
    冬林探花阅读 6,296评论 1 4
  • 姑娘,在陌生的城市你必须要有一技之长 麦子说 08-03 姑娘,你只身一人来到这陌生的城市,你必须要有一技之长...
    麦子育儿说阅读 2,900评论 0 5
  • 我想在清晨的海面带一点薄雾给你 告诉你早晨的光芒会冲破深夜的迷离 我想在傍晚的海边捡一片贝壳给你 告诉你大海的深沉...
    sandorL阅读 952评论 0 2
  • 恍恍惚惚的动车 快速的行驶着 一个又一个的征程 继续着 我从什么地方 来到这里 我经历了什么 当我回头看看时 他们...
    阗溢阅读 1,053评论 0 0