Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
dusha_prog
2 / 2 / 1
Регистрация: 18.11.2017
Сообщений: 4
1

Хранилище объектов С++

18.11.2017, 20:23. Просмотров 288. Ответов 1
Метки с++ (Все метки)

Хочу создать хранилище для точек и отрезков. Классы point и section наследуются от общего предка shape. В хранилище я создаю массив указателей на объекты типа shape. Когда я заполняю этот массив точками, то при работе с элементами массива у меня программа уже работает не с точками, а с shape. В чем у меня проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class shape
{
public:
    shape() {
    }
    virtual void show_parametri() {
        cout << " Абстрактная фигура " << endl;
    }
    ~shape() {
        cout << "Фигура удалилась" << endl;
    }
};
class point :public shape {
private:
    int x, y;
public:
    point() {
        x = 0;
        y = 0;
    }
    virtual void show_parametri() {
        cout << " Это точка" << endl;
        cout << " Координаты = " << x << " , " << y << endl;
    }
    ~point() {
        cout << "Точка удалилась" << endl;
    }
};
class Section :public shape {
private:
    point *p1, *p2;
    int x1, x2, y1, y2;
public:
    Section() {
        p1 = new point(0, 0);
        p2 = new point(0, 0);
        x1 = x2 = y1 = y2 = 0;
    }
    ~Section() {
        cout << "Отрезок удалился" << endl;
        delete p1;
        delete p2;
    }
    virtual void show_parametri() {
        cout << " Это отрезок " << endl;
    }
};
class MyStorage {
private:
    shape **objects;
    int size;
public:
    MyStorage(int size)
    {
        this->size = size;
        objects = new shape*[size];
    }
    void SetObject(int index, shape *object) {
        objects[index] = object;
    }
    shape GetObject(int index) {
        return *objects[index];
    }
int main()
{
    setlocale(LC_ALL, "Rus");
    MyStorage storage(10);
    for (int i = 0; i < storage.getCount(); i++) {
        storage.SetObject(i, new point());
    }
    for (int i = 0; i < storage.getCount(); i++) {
        storage.GetObject(i).show_parametri();
    }
    system("pause");
    return 0;
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2017, 20:23
Ответы с готовыми решениями:

Динамическое хранилище объектов
Хочу написать динамическое хранилище объектов. Есть у меня два класса...

Как правильно реализовать метод добавления и удаления объектов в хранилище без перегрузки?
Не знаю как правильно здесь реализовать метод добавления и удаления объектов в...

В программе реализовать возможность записи объектов в файл и чтения объектов из файла
Добрый день, помогите, пожалуйста! У меня есть программа: #include &lt;iostream&gt;...

Байтовое хранилище данных
Привет, народ. Есть задача - в руки мне даётся структура, предназначенная для...

Добавление и удаление объектов. Рисование объектов на экране
Доброго времени суток. Есть очень интересующий вопрос, как сделать...

1
hoggy
Заблокирован
Эксперт С++
18.11.2017, 21:58 2
Цитата Сообщение от dusha_prog Посмотреть сообщение
shape GetObject(int index) {
* * * * return *objects[index];
* * }
заменить на:

C++
1
2
3
shape& GetObject(int index) {
        return *objects[index];
    }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2017, 21:58

Ввод элементов в хранилище данных
Нужно создать хранилище данных(это дерево из стеков).При добавлении в...

Программа, которая позволяет ввести неограниченное количество значений и сохранить их в массив, размещенный в свободном хранилище
Напишите программу на «родном» С++, которая позволяет ввести неограниченное...

Хранилище больших чисел
разработать структуру данных способную хранить числа любого размера. Также вам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru