dimanche 19 juin 2016

Overloading operators outside of the class

So, i have a simple class:

class complex{

private:

    double a,b;

public:

    void setA(double a){ this->a=a; }

    void setB(double b){ this->b=b; }

    double getA(){ return a; }
    double getB(){ return b; }

    friend complex operator+(const complex&, const complex&);
};

And i have the actual overloaded operator here:

complex operator+(const complex& x, const complex& y){

    complex c;
    c.a=x.a+y.a;
    c.b=x.b+y.b;
    return c;
}

I must have the operator overloaded outside of the function. In order to have access to private variables (those also HAVE to be private) I befriended the class with the function. I don't know if that's correct way to do such things, but at least it works. I want to be able to add an integer to both members. In main():

complex a;
a.setA(2);
a.setB(3);
a+5;

Would result in having a.a=7 and a.b=8. Such overload inside the class is quite easy to make (Again, don't know if that's good solution, if not please correct me):

complex operator+(int x){

    this->a+=x;
    this->b+=x;
}

But I have no idea how to make it outside of the class because i can't use "this" pointer.

Aucun commentaire:

Enregistrer un commentaire