Задачи как таковой нет, просто создание системы классов с открытым наследованием. Классы описывают картинную галерею, методы осуществляют аукцион (продажа по максимальной цене), есть перегрузка оператора потокового вывода. | Код | /*/////////////////////////////////////////// ГЛАВНЫЙ ФАЙЛ ПРОГРАММЫ // *//////////////////////////////////////////// #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; /*ОПИСАНИЯ КЛАССОВ И ПРОТОТИПЫ МЕТОДОВ*/ typedef unsigned int ui; //Заменяем имя типа "unsigned int" на более лаконичное "ui". class Gallery { private: //Закрытые элементы класса. char* Author; //Автор картины. char* Name; //Название картины. ui Year; //Год написания. char* Style; //Стиль. public: //Открытые элементы класса. Gallery(void); Gallery(char* author, char* name = "", ui year = 0, char* style = "", ui price = 0); //Прототип конструктора (с параметрами по умолчанию). void setAuthor(char*); //Установить автора. char* getAuthor() const; //Считать автора. void setName(char*); //Установить название. char* getName() const; //Считать название. ui getYear() const; //Считать год. void setYear(ui); //Установить год. void setStyle(char*); //Установить стиль. char* getStyle() const; //Считать стиль. ~Gallery(); //Прототип деструктора. }; class Exhibit :public Gallery { ui Price; //Цена билета public: void setPrice(ui); //Установить цену билета на выставку. ui getPrice() const; //Считать цену билета на выставку. void AddPrice(ui); //Увеличить цену. void SalePrice(ui); //Скидка на билет. Gallery Max_price(Gallery&); //Возвращает объект с максимальной ценой. }; class Trade :public Gallery { ui Stavka; //Цена ставки на картину. ui max = 0; public: void Auction(ui); //Аукцион. friend ostream& operator<<(ostream& os, Trade& tr) { os << "КАРТИНА: " << endl; os << "Автор: " << tr.getAuthor() << "\n"; os << "Название: " << tr.getName() << "\n"; os << "Год: " << tr.getYear() << "\n"; os << "Стиль: " << tr.getStyle() << "\n"; os << "Цена: " << tr.max << "\n"; return os; } }; //Перегрузка конструкторов: Gallery::Gallery(void) //Конструктор класса. { Author = ""; Name = ""; Year = 0; Style = ""; } Gallery::Gallery(char* author, char* name, ui year, char* style) { Author = author; Name = name; Year = year; Style = style; } Gallery::~Gallery() //Деструктор класса. { } void Gallery::setAuthor(char* author) { Author = author; } char* Gallery::getAuthor() const { return Author; } void Gallery::setName(char* name) { Name = name; } char* Gallery::getName() const { return Name; } ui Gallery::getYear() const { return Year; } void Gallery::setYear(ui y) { if (y > 1000) Year = y; else Year = 0; } void Gallery::setStyle(char* style) { Style = style; } char* Gallery::getStyle() const { return Style; } void Exhibit::setPrice(ui price) { Price = price; } ui Exhibit::getPrice() const { return Price; } void Exhibit::AddPrice(ui add) { Price += add; } void Exhibit::SalePrice(ui sale) { Price -= sale; } Exhibit Exhibit::Max_price(Exhibit& pic) { if (Price < pic.getPrice()) { return pic; } else return *this; } void Trade::Auction(ui stavka) { ui n; cout << "Введите количество ставок: "; cin >> n; for (int i(0); i < n; i++) { cout << "Введите " << i - 1 << "-ую ставку: "; cout << "\n"; cin >> stavka[i]; } for (int i = 0; i < n; i++) { if (stavka[i] > max) max = stavka[i]; } cout << "Картина продана за " << max << "$" << endl; } int main(int argc, char** argv) { setlocale(LC_ALL, "Russian"); system("pause"); return 0; }
|
В главном методе еще не созданы объекты, то есть классы и их методы еще не используются. Есть ошибки в описаниях методов (компилятор на них ругается), помогите, пожалуйста, их исправить. Компилятор показывает ошибки в строках: 81, 162 и 180-185. И еще - не могу описать деструктор :(
|