I am trying to create the operator that makes the same thing as constructor do.
I have created the overloaded output operator <<
for this class , it was easy.
I just wanna type nameOfObject+(value)
to create new instance of foo
class.
I tried this:
foo& operator+(int x, foo& f) {
f tmp = new foo(x);
return tmp;
}
But I got error message that says I need to use ;
after tmp
;
#include <iostream>
#include <memory>
class foo {
private:
int x;
public:
foo(int x) { this->x = x; }
int getX() { return this->x; }
};
std::ostream& operator<< (std::ostream& text, foo& f) {
text << f.getX();
return text;
}
int main()
{
foo bar(2);
std::cout <<bar; //returns 2
return 0;
}
UPDATE_1:
For example, I have the heightOfTheTree
variable in my class. Using foo tree1(5)
- normal constructor I just want to assign the 5 to my variable. But using foo tree2+5
, I want to create new object with value multiplied twice(for example).