I'm making integer calculator using C++. Why is the following not working?
#include <iostream>
#include <string>
using namespace std;
class Number {
int i;
public:
Number(int i) {
this->i = i;
}
void show();
Number operator+(Number op2);
};
void Number::show() {
cout << "result is" << i << endl;
}
Number Number::operator+(Number op2) {
Number tmp;
tmp.i = this->i + op2.i;
return tmp;
}
int main() {
Number real1, real2, lastsum;
cout << "first integer" << endl;
getline(cin, real1.i);
cout << "second integer" << endl;
getline(cin, real2.i);
lastsum = real1 + real2;
lastsum.show();
}
I intended in this way.
- First, "first integer" sentence appear on console. Type first integer what i want.
- Second, "second integer" sentence appear on console. Type second integer what i want.
- cuz of operator overloading, real1.i and real2.i added each other(like 1+2=3) and the result copy in lastum.i
- "result is (sum)"appears at last cuz of lastsum.show();
And here is the error message (I'm using onlinegdb but imma text only red sentences appeared.)
main.cpp:23:12:error: no matching function for call to ‘Number::Number()
23 | Number tmp;
| ^~~
main.cpp:32:12: error: no matching function for call to ‘Number::Number()’
32 | Number real1, real2, lastsum;
| ^~~~~
main.cpp:32:19: error: no matching function for call to ‘Number::Number()’
32 | Number real1, real2, lastsum;
| ^~~~~
main.cpp:35:24: error: ‘int Number::i’ is private within this context
35 | getline(cin, real1.i);
| ^
main.cpp:35:12: error: no matching function for call to ‘getline(std::istream&, int&)’
35 | getline(cin, real1.i);
| ~~~~~~~^~~~~~~~~~~~~~
main.cpp:38:24: error: ‘int Number::i’ is private within this context
38 | getline(cin, real2.i);
| ^
main.cpp:38:12: error: no matching function for call to ‘getline(std::istream&, int&)’
38 | getline(cin, real2.i);
| ~~~~~~~^~~~~~~~~~~~~~