Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
|
||||||
1 | ||||||
Хранение разных типов13.03.2014, 12:47. Показов 3617. Ответов 22
Метки нет (Все метки)
Приветствую всех. Возник вот такой вопрос. У меня есть, например, 3 разных структуры, каждая из которых имеет разные поля:
0
|
13.03.2014, 12:47 | |
Ответы с готовыми решениями:
22
Хранение разных типов данных под одним указателем Хранение и вызов различных типов функций в одной переменной Хранение в контейнере обьектов разных классов Указатели разных типов |
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
|
|
13.03.2014, 12:56 [ТС] | 3 |
Ilot, поясните, плиз?
0
|
13.03.2014, 13:19 | 4 | |||||
Сообщение было отмечено TenGen как решение
Решение
Например так:
Кликните здесь для просмотра всего текста
2
|
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
|
|
13.03.2014, 13:27 [ТС] | 5 |
Ilot, благодарю, сейчас попробую
0
|
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
|
||||||
13.03.2014, 13:41 | 6 | |||||
а такой вариант вместо наследования как вам?
1
|
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
|
|
13.03.2014, 13:48 [ТС] | 7 |
jurok_85, вариант интересный, но нерациональный. Вопрос стоял именно в том, что бы помещать одну запись определенного типа в одну ячейку массива
0
|
aLarman
|
13.03.2014, 13:49
#8
|
Не по теме: jurok_85, я думаю надо было в одном элементе массива хранить не все структуры, а одну Не по теме: опоздал :)
0
|
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
|
|
13.03.2014, 13:51 | 9 |
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
|
||||||
13.03.2014, 14:09 | 10 | |||||
А еще есть union:
0
|
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
|
|
13.03.2014, 14:13 | 11 |
Наследование, конечно, поможет запихнуть объекты разных типов в один контейнер. Но тогда потеряется информация о конкретном типе каждого элемента. Когда будете из контейнера элементы, придётся делать dynamic_cast<>, что, мягко говоря, нехорошо.
0
|
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
|
|
13.03.2014, 14:15 [ТС] | 12 |
John Prick, а вы какое решение можете посоветовать? Мне бы хотелось, что бы потом из него можно было извлекать данные без лишних телодвижений
0
|
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
|
|
13.03.2014, 14:21 | 13 |
TenGen, в первую очередь подумайте, зачем вам понадобилось помещать эти разные структуры в один контейнер. Возможно, найдётся какое-то другое решение. Опишите вашу задачу.
0
|
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
|
||||||
13.03.2014, 14:28 [ТС] | 14 | |||||
John Prick, я вознамерился для некоторых целей сделать очень простой "скриптовый" язык. И в этом массиве хочу хранить тип команды и нужные параметры. Само собой, количество и тип параметров различаются.
Пока реализовал некую универсальную запись в виде
0
|
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
|
||||||
13.03.2014, 14:34 | 15 | |||||
Возможно тогда вам следует сделать структуры команды такой:
0
|
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
|
|
13.03.2014, 14:36 [ТС] | 16 |
John Prick, целые числа и строки. А назначение их может быть каким угодно, зависит от конкретной команды
0
|
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
|
|||||||||||
13.03.2014, 14:49 | 18 | ||||||||||
Тогда можно поступить так:
Однако, когда вы будете обращаться к конкретным параметрам, вам всё равно придётся как-то выяснять их тип. Толи с помощью dynamic_cast, толи ещё каким-нибудь способом (например, паттерн visitor есть на этот случай). Возможно, вам стоит подумать, нельзя ли как-то сделать параметры команды одного типа.
0
|
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
|
|
13.03.2014, 14:54 [ТС] | 19 |
Ilot, я о таком не слышал) можно подробнее?
John Prick, думаю вот...
0
|
13.03.2014, 14:59 | 20 |
У любого приложения на Windows есть очередь т.н. сообщей. Т.е. любое событие происходящее с приложением описывается как структура типа MSG. Одно поле идентифицируется как код команды, смысл остальных полей зависит от типа сообщения. Одним словом гуглите оконная процедура там все будет понятно.
0
|
13.03.2014, 14:59 | |
13.03.2014, 14:59 | |
Помогаю со студенческими работами здесь
20
Сложение разных типов Матрица из разных типов Открытие разных типов файлов Присваивание разных типов итераторам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |