Ошибка с конструкциями с++
Пытаюсь разобраться с конструкциями,само задание звучит так: Создание объекта с помощью конструктора по умолчанию
Создание объекта с помощью конструктора с параметрами
Создание массива объектов
Редактирование и просмотр свойств каждого объекта
Обработка массива объектов
Код:
#include <iostream>
#include <cstdlib>
using namespace std;
class Prog
{
private:
string name;
string author;
double ver;
double year;
public:
Prog();
Prog(string name, string author, double ver, double year);
~Prog();
void setName(string name);
void setAuthor(string author);
void setVer(double ver);
void setYear(double year);
string getName();
string getAuthor();
double getVer();
double getYear();
};
int main()
{
setlocale(LC_ALL,"russian");
//создаём объекты по умолчанию и с параметрами
Prog p2("Name1","Author1","1","2001");
//вводим данные для третьего объекта
Prog p2;
string buff;
double f;
//вводим данные для объекта p3
cout << "Введите параметры объекта" << endl;
cout << "Имя программы: ";
cin >> buff;
p3.setName(buff);
cout << "Автор: ";
cin >> buff;
p3.setAuthor(buff);
cout << "Версия: ";
cin >> f;
p3.setVer(f);
cout << "Год: ";
cin >> f;
p3.setYear(f);
cout << p3.getName() << " " << p3.getAuthor() << " " << p3.getVer() << " " << p3.getYear() << endl;
Prog arr[3];//создаем массив принтеров
//Вводим данные в массив arr
for(int i = 0; i<3; i++){
cout << "Введите параметры объекта" << endl;
cout << "Имя программы: ";
cin >> buff;
arr[i].setName(buff);
cout << "Автор: ";
cin >> buff;
arr[i].setAuthor(buff);
cout << "Версия: ";
cin >> f;
arr[i].setVer(f);
}
cout << endl;
//выводим все элементы массива arr
for(int i = 0; i<3; i++){
cout << i << ") " << arr[i].getName() << " " << arr[i].getAuthor() << " " << arr[i].getVer() << " " << arr[i].getYear() << endl;
}
//ищем самую новую версию
int lessVer = 0;
for(int i = 0; i<3; i++){
if(arr[i].getVer() < arr[lessVer].getVer())
lessVer = i;
}
cout << "Самая маленькая цена" << endl;
cout << lessVer << ") " << arr[lessVer].getName() << " " << arr[lessVer].getAuthor() << " " << arr[lessVer].getYear() << " " << arr[lessVer].getVer() << endl;
return 0;
}
//Конструктр по умолчанию
Prog::Prog():name("Name1"),author("Author1"),ver("1"),year("2001")
{
}
//Конструктор с параметрами
Prog::Prog(string name,string author,double ver,double year):name(name),author(author),ver(ver),year(year)
{
}
Prog::~Prog()//деструктор
{
}
//Установка знач-я им.прог-ы
void Prog::setName(string name)
{
this->name = name;
}
//Установка знач-я Автора
void Prog::setAuthor(string author)
{
this->author = author;
}
//Установка знач-я Версии
void Prog::setVer(double ver)
{
this->ver = ver;
}
//Установка знач-я Года
void Prog::setYear(double Year)
{
this->year = year;
}
//Получаем значения
string Prog::getName()
{
return this->name;
}
string Prog::getAuthor()
{
return this->author;
}
double Prog::getVer()
{
return this->ver;
}
double Prog::getYear();
{
return this->year;
}
Помогите пофиксить ошибки.
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Разберем.
Prog p2("Name1","Author1",1,2001);
здесь 3 и 4 параметр double, не нужно в кавычки брать
Prog p3;
в коде было p2. Но p2 уже объявлено, а дальше по коду p3. А также комментарий в предыдущей строке как бы намекает.
Prog::Prog():name("Name1"),author("Author1"),ver(1),year(2001)
а тут такая же ошибка была, как и в первом случае
double Prog::getYear()
а тут просто лишняя точка с запятой.
После таких исправлений оно как минимум уже компилируется.