+ 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.

27th Nov 2018, 9:18 PM
OrHy3
OrHy3 - avatar
4 Respostas
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
27th Nov 2018, 10:34 PM
OrHy3
OrHy3 - avatar
+ 2
Alright, sorry for the misunderstanding. :)
27th Nov 2018, 10:49 PM
Dennis
Dennis - avatar
+ 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;
27th Nov 2018, 9:55 PM
Dennis
Dennis - avatar
- 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.
27th Nov 2018, 10:27 PM
OrHy3
OrHy3 - avatar