Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Условие для создания структуры / 17 сообщений из 17, страница 1 из 1
11.07.2014, 15:23
    #38694472
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
Всем привет!

Есть несколько структур-компонент, выбор структуры зависит от некоторого условия (от флага 1/2/3...)

Реально ли в самой программе создать структуру, которая будет включать в себя какой-то набор структур-компонент, соответствующий значению флага?

Пример:
Если первый байт заголовка файла = 1, то в структуре должны быть структура "Время", "Имя", а если = 2, то "Время", "ФИО", "Количество строк"
...
Рейтинг: 0 / 0
11.07.2014, 15:28
    #38694479
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
union?
...
Рейтинг: 0 / 0
11.07.2014, 15:31
    #38694484
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
Basil A. Sidorov,

ээээ...
почитаю...
...
Рейтинг: 0 / 0
11.07.2014, 16:16
    #38694561
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
авторЕсть несколько структур-компонент,



В С++ нет понятия "компонент".



авторРеально ли в самой программе создать структуру, которая будет включать в себя какой-то набор структур-компонент, соответствующий значению флага?


Реально.

авторЕсли первый байт заголовка файла = 1, то в структуре должны быть структура "Время", "Имя", а если = 2, то "Время", "ФИО", "Количество строк"


Реально.
...
Рейтинг: 0 / 0
11.07.2014, 16:17
    #38694565
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
Basil A. Sidorovunion?

union на самом деле может быть и ни при чём тут.
Можно делать через union, можно делать и без union.
...
Рейтинг: 0 / 0
11.07.2014, 16:25
    #38694578
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
ioscat, коробочное решение этого вопроса - полиморфизм. А то что ты делаешь
это жуткая экономия на спичках. Она полезна когда много данных сериализируются
на диск или в базу например.
...
Рейтинг: 0 / 0
11.07.2014, 17:18
    #38694642
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
On 11.07.2014 17:25, mayton wrote:

> ioscat, коробочное решение этого вопроса - полиморфизм. А то что ты делаешь
> это жуткая экономия на спичках. Она полезна когда много данных
> сериализируются
> на диск или в базу например.

Ну, как бы я уже пытался намекнуть, что union для записи в и чтения из
файла не нужен. Нужны полиморфные операции чтения и записи (причём они
нужны и при наличии union в памяти, и при его отсутствии).

union нужен для экономии размещения этого дела именно в памяти, притом
только в случае, если структуры маленькие и накладные расходы в виде
одного указателя на структуру (четыре байта) неприемлимы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.07.2014, 19:00
    #38694728
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
Так, попробую более точно сказать, что мне нужно:

Есть данные в виде
dataFlag 3 bytes
timecode 4 bytes
dataID 3 bytes
data *
- if data[0] = 0
- - 1 byte
- if data[0] = 1
- - dataSize 2 bytes
- - dataCode 1 byte
-if data[0] = 2
- - dataSize 2 bytes
- - dataValue 4 bytes

То есть от того, какие флаги стоят в полях, меняется состав сообщения.
...
Рейтинг: 0 / 0
11.07.2014, 19:15
    #38694732
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
ioscatТо есть от того, какие флаги стоят в полях, меняется состав сообщения.

Ну и? Сначала читаешь общую часть структуры, анализируешь флаги, дочитываешь переменную. В
чём проблема-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.07.2014, 09:22
    #38695626
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
Dimitry Sibiryakov,

как всё это в одну структуру считать? по идее в структуре должны быть разные составляющие, а как её создать в программе? или создать разные на все случаи жизни?
...
Рейтинг: 0 / 0
14.07.2014, 09:37
    #38695640
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
...
Рейтинг: 0 / 0
14.07.2014, 11:49
    #38695764
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
ioscatкак всё это в одну структуру считать? по идее в структуре должны быть разные
составляющие, а как её создать в программе? или создать разные на все случаи жизни?
Делай как удобнее. Про union тебе уже сказали. Я скажу ещё про наследование.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.07.2014, 12:45
    #38695844
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
как всё это в одну структуру считать?

ПОЭЛЕМЕНТНО.

по идее в структуре должны быть разные составляющие, а как её создать в программе?

Когда ты читаешь и не знаешь ещё, какая будет структура, читай во временное хранилище. Потом создавай нужную структуру и копируй туда уже начитанное.
...
Рейтинг: 0 / 0
14.07.2014, 14:32
    #38695966
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
MasterZiv
Когда ты читаешь и не знаешь ещё, какая будет структура, читай во временное хранилище. Потом создавай нужную структуру и копируй туда уже начитанное.

Вот тут встрял, как создать нужную структуру? Вставка switch в структуру не удаётся.
...
Рейтинг: 0 / 0
14.07.2014, 14:59
    #38695991
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
ioscatMasterZivКогда ты читаешь и не знаешь ещё, какая будет структура, читай во временное хранилище. Потом создавай нужную структуру и копируй туда уже начитанное.

Вот тут встрял, как создать нужную структуру? Вставка switch в структуру не удаётся.

Объяви 20 или сколько нужно нужных структур с финальной их конфигурацией в памяти. Все вариации.
И создавай одну из них , malloc или new -- как угодно. После этого начитывай в неё данные.
...
Рейтинг: 0 / 0
14.07.2014, 15:12
    #38695998
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
MasterZiv,

вот этого я и хотел избежать =(

Спасибо всем за помощь! =)
...
Рейтинг: 0 / 0
15.07.2014, 07:59
    #38696512
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие для создания структуры
ioscatMasterZiv,

вот этого я и хотел избежать =(

Спасибо всем за помощь! =)

частично избежать это поможет наследование.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Условие для создания структуры / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]