Здравствуйте! Я новичок в программировании. Необходимо реализовать операции сложения, вычитания и тп. В main возникла проблема при объявлении объекта n1 " для класса Calculate не существует конструктор по умолчанию". Подскажите пожалуйста , где ошибка и что я сделал не так
#include <iostream>
using namespace std;
class Calculate {
private:
int x, y;
public:
Calculate(int a, int b) {
int x = a;
int y = b;
}
void setNum() {
cout << " Enter x:";
cin >> x;
cout << "Enter y: ";
cin >> y;
}
void showNum() {
cout << " x= " << x << endl;
cout << "y= " << y << endl;
}
void sum(int x, int y) {
int sum = x + y;
cout << "Sum = " << sum << endl;
}
void sub(int x, int y) {
int sub = x - y;
cout << "Sub = " << sub << endl;
}
void mul(int x, int y) {
int mul = x*y;
cout << "Mul = " << mul << endl;
}
void div(int x, int y) {
if (y == 0) {
cout << "Division by zero" << endl;
}
else {
int div = x / y;
cout << "Div = " << div << endl;
}
}
};
int main() {
int a, b;
Calculate n1;
n1.sum(a,b);
n1.sub(a,b);
n1.mul(a,b);
n1.div(a,b);
system("pause");
return 0;
}
А чего ты ожидал - у тебя объявлено
Calculate n1;
Когда ты сам в классе прописал, что у тебя только один конструктор и он соответствует
Calculate n1(10, 20)
В классе надо указать еще один конструктор без параметров (конструктор по умолчанию)
Calculate() {
x = 0;
y = 0;
}
Когда ты в классе в явном виде указываешь конструкторы, они в неявном виде уже не предусматриваются.
Поэтому у тебя должно быть следующее:
class Calculate {
private:
int x, y;
public:
Calculate() {
x = 0;
y = 0;
}
Calculate(int a, int b) {
x = a;
y = b;
}
/* тут твои методы */
};
Ну и вторая ОФИГЕННАЯ ошибка:
Ты в конструкторе присваиваешь значения x, y, которые являются локальными и после завершения работы конструктора сдохнут
Calculate(int a, int b) {
int x = a;
int y = b;
}
int x = a;
вот это объявление надо убрать, т.е. будет
x = a;
А то конструктор у тебя вообще своей функции не выполнял.
Т.е. было:
Calculate(int a, int b) {
int x = a;
int y = b;
}
стало:
Calculate(int a, int b) {
x = a;
y = b;
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости