Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП, простейшие классы 
:(
    Опции темы
mihrimah
Дата 2.5.2014, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.3.2014

Репутация: нет
Всего: нет



Задачи как таковой нет, просто создание системы классов с открытым наследованием. Классы описывают картинную галерею, методы осуществляют аукцион (продажа по максимальной цене), есть перегрузка оператора потокового вывода.

Код

/*///////////////////////////////////////////
ГЛАВНЫЙ ФАЙЛ ПРОГРАММЫ                     //
*////////////////////////////////////////////
 
#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.

И еще - не могу описать деструктор :(
PM MAIL   Вверх
bsa
Дата 2.5.2014, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



81. Сравни строку 25 и 81
180. Какого типа у тебя переменная stavka? Позволяет ли этот тип обращение по индексу?
162. Сравни со строкой 49.

Деструктор у галлери должен быть виртуальным. В деструкторе должны быть delete на каждый new сделанный методами класса.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.