Делаю программу на с++. Вылезает ошибка
Пишу прогу, вылезает ошибка, что отсутствуют экземпляры конструктора cars::cars, соответствующие списку аргументов. Делал всё по аналогичному коду.
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
class cars
{
private:
int m_nds=((m_cena/100)*15);
int m_cena;
int m_nishtyaki;
public:
cars(int cena,int nishtyaki )
{
cena = m_cena;
nishtyaki = m_nishtyaki;
}
int get_m_cena() const
{
return m_cena ;
}
friend cars operator+(const cars &cena, const cars &nishtyaki);
};
cars operator+(const cars &cena, const cars &nishtyaki)
{
return cars(cena.m_cena + nishtyaki.m_nishtyaki+cena.m_nds);
}
int main()
{
cout << "Введите ценник на BMW" << endl;
int cennik_bmw;
cin >> cennik_bmw;
cout << "Введите ценник на Mercedes" << endl;
int cennik_benza;
cin >> cennik_benza;
setlocale(LC_ALL, "rus");
cars benz(cennik_benza,1000);
cars bmw(cennik_bmw,1000);
cars summa = benz + bmw;
cout <<"Вы должны за машины "<< summa.get_m_cena()<<" долларов" <<endl;
return 0;
}
Ответы (1 шт):
Смотрите - у вас есть два странных места:
Первое -
int get_m_cena() const
{
return ;
}
Вы же обязались вернуть int - так почему не возвращаете? :) наверное, тут должно быть return m_cena;?
А второе - вот:
cars operator+(const cars &cena, const cars &nishtyaki)
{
return cars(cena.m_cena + nishtyaki.m_nishtyaki+cena.m_nds);
}
Вы вроде бы возвращаете некий cars (логику сложения автомобилей оставим на другой вопрос...) - но передаете ему только одно значение -
cena.m_cena + nishtyaki.m_nishtyaki+cena.m_nds
В то время как для создания автомобиля вы обязаны передать ДВА параметра:
cars(int cena,int nishtyaki )
другого конструктора, с одним параметром, у вас нет.
Так что решите, какой cars должен возвращаться, с какими двумя параметрами - и все получится.
Ну, как получится... Скомпилируется. А как будет работать - это второй вопрос, на это я не пытался смотреть - для этого надо знать, что программа должна делать.