47 / 21 / 11
Регистрация: 01.11.2013
Сообщений: 255
1

Работа с памятью: можно ли в массив объектов с полем типа "Родитель", вписать объекты с полем типа "Потомок"

26.03.2016, 21:17. Показов 948. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Предположим, что у нас есть массив из структур в которых находиться класс Item и число Count. Можно ли на место Item записать экземпляр класса унаследованного от Item?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2016, 21:17
Ответы с готовыми решениями:

Работа с полем типа вложение в ADO
Формчане, добрый день. В accesse есть таблица с двумя полями: "ID изображение", "изображение",...

ADO+MSSQL работа с полем типа real
В таблице есть столбец формата real. При выводе его в Studio (sql запрос) выводит нормально , но...

Работа с полем типа TIMESTAMP через Firebird/C++
Приветствую. Такое дело, господа. Есть БД (или будет), одним из полей которой должно быть поле...

Класс с полем типа LPDIRECT3DDEVICE9
Можно ли создать класс с полем типа LPDIRECT3DDEVICE9? Если да - то как! Добавлено через 28...

Класс с полем типа map
Привет, можно ли сделать класс с полем типа map<int,int>? У меня это сделать не получается -...

5
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.03.2016, 21:33 2
Цитата Сообщение от maks242 Посмотреть сообщение
Можно ли на место Item записать экземпляр класса унаследованного от Item?
можно.

однако, наследник может иметь дополнительные поля,
а значит занимать больше места.

а значит при такой записи,
экземпляр наследника не влезет в рамки памяти,
которая была выделена под экземпляр базового класса,
что приведет к порче чужой памяти,
и непредсказуемым последствиям.

но если размер наследника совпадает с размером базового класса,
тогда - почему бы и нет?
обычное дело на практике.
1
47 / 21 / 11
Регистрация: 01.11.2013
Сообщений: 255
26.03.2016, 21:36  [ТС] 3
Дело в том, что у меня унаследованный класс имеет больше переменных чем базовый класс. Как в таком случае поступить?
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
26.03.2016, 21:38 4
Цитата Сообщение от maks242 Посмотреть сообщение
Как в таком случае поступить?
Принято хранить указатель на базовый класс и динамически выделять нужную память.
Тогда таких проблем не возникнет!
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.03.2016, 21:44 5
Цитата Сообщение от maks242 Посмотреть сообщение
Дело в том, что у меня унаследованный класс имеет больше переменных чем базовый класс. Как в таком случае поступить?
как то так:

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
#include <iostream>
 
struct base{
    virtual ~base(){}
    virtual const char* name()const { return "base"; }
};
 
struct foo: base{
    virtual const char* name()const { return "foo"; }
    int a=10;
};
 
struct der: base{
    virtual const char* name()const { return "der"; }
    double a=10;
};
 
int main()
{
    std::cout << "Hello, world!\n";
 
    base* arr[] = {
        new foo,
        new der
    };    
    
    for(const auto& el: arr)
        std::cout <<"my name is '"<< el->name()<<"'\n",
        delete el;
}
0
47 / 21 / 11
Регистрация: 01.11.2013
Сообщений: 255
26.03.2016, 21:44  [ТС] 6
Каким образом можно выделить память в массиве для такого элемента?
0
26.03.2016, 21:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2016, 21:44
Помогаю со студенческими работами здесь

Проблемы с полем типа TIME
Имеем: Cервер: OS/2 EComStation, MySQL for OS/2 v4.0.18 Рабочая станция: Windows2000, драйвер...

Накосячил с полем типа Readers
Вобщем такая ситуация. В документе есть поле AReaders (тип, соответственно, Readers). Поле...

Проблемы с полем типа DateTime В классе
Пробовал объявить поле типа DateTime .... взамен выдает ошибки....хотя тоже самое на шарпе...

VC++ MS SQL: проблема с полем типа image
Забандил класс от CRecordset на таблицу. Визард подхватил таблицу и создал все необходимые...

Клас с полем типа другого класа
Есть клас car с полями и методом заполнения етих полей. Надо написать клас tz в котором есть поле...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru