Ошибка с конструкциями с++

Пытаюсь разобраться с конструкциями,само задание звучит так: Создание объекта с помощью конструктора по умолчанию

Создание объекта с помощью конструктора с параметрами

Создание массива объектов

Редактирование и просмотр свойств каждого объекта

Обработка массива объектов

Код:

#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()

а тут просто лишняя точка с запятой.

После таких исправлений оно как минимум уже компилируется.

→ Ссылка