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

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

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

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

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



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



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


Реально.

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


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

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

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

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

union нужен для экономии размещения этого дела именно в памяти, притом
только в случае, если структуры маленькие и накладные расходы в виде
одного указателя на структуру (четыре байта) неприемлимы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Условие для создания структуры
    #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
Условие для создания структуры
    #38694732
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ioscatТо есть от того, какие флаги стоят в полях, меняется состав сообщения.

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

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

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

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

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

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

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

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

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

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

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

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

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


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