+ 1
Binary operators with objects
I 've got this problem: I 'm writing a c++ class and using operator overloading I saw that in a case like the "+" case I can 't take the object as the second argument, only as the first. How can I fix this? P. S. : I 'm sure it 's possible to fix that because using the <string> library it works and returns the sum of a char* variable and a std::string object.
4 Answers
0
You have to declare the function out of the class declaration, like this:
class Example {
    public:
    int a;
    test(int a = 0) {
        this->a = a;
    }
    void operator+(Example a) {
        cout << this->a + a.a << endl;
    }
    void operator+(int a) {
        cout << this->a + a << endl;
    }
};
void operator+(int a, Example b) {
    cout << a + b.a << endl;
}
int main {
    Example a = 3;
    a + a;
    a + 4;
    5 + a;
}
Output:
6
7
8
+ 2
Alright, sorry for the misunderstanding. :)
+ 1
Why do you need to pass 2 arguments to the + operator?
The first object is called this, while the argument you pass to the operator is the 2nd object.
For example:
( Just assume Object has some member variable called a )
...
Object operator+( const Object& other )
{
   Object tmp = *this;
   tmp.a += other.a;
   return tmp;
}
...
Object a, b;
Object c = a + b;
- 1
I meant when I use the operator to perform an operation between a non-object type as first argument and an object type as second argument, so I can 't use the this keyword. At least I found my answer. Thanks Dennis.



