Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
TenGen
Будущее рядом
99 / 97 / 20
Регистрация: 06.03.2014
Сообщений: 342
#1

Хранение разных типов - C++

13.03.2014, 12:47. Просмотров 964. Ответов 22
Метки нет (Все метки)

Приветствую всех. Возник вот такой вопрос. У меня есть, например, 3 разных структуры, каждая из которых имеет разные поля:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct one
{
int x;
int y;
string value;
};
 
struct two
{
string k;
double a;
double b;
double c;
};
 
struct three
{
char t;
double z;
string name;
}
Можно ли создать динамический массив, где можно будет хранить сразу все эти структуры?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 12:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Хранение разных типов (C++):

Хранение и вызов различных типов функций в одной переменной - C++
Есть класс, который должен хранить функции и давать возможность их вызывать. Он выглядит примерно так: class Functions { public:...

Хранение в контейнере обьектов разных классов - C++
Здраствуйте. Есть небольшая иерархия классов, в вершине которой стоит абстрактный класс vehicle, а от него наследуеться пару классов....

Сложение разных типов - C++
У меня из файла в переменную int считывется число.. Мне нужно занести в переменную string это число + строка. Например int...

Указатели разных типов - C++
Добрый день уважаемые форумчане !!! Хочу уточнить для себя следующую деталь. Есть базовый класс Fada и производные от него Tasa ...

Матрица из разных типов - C++
хочу создать клас Matrix елементы обьектов которого могли бы быть разных типов. была идея создать клас Cell и определить его как...

Открытие разных типов файлов - C++
Добрый день. Я тут задался вопросом "а можно ли открыть изображение через fstream в бинарном режиме?", через пару минут понял что нет. ...

22
TenGen
Будущее рядом
99 / 97 / 20
Регистрация: 06.03.2014
Сообщений: 342
13.03.2014, 14:36  [ТС] #16
John Prick, целые числа и строки. А назначение их может быть каким угодно, зависит от конкретной команды
0
Ilot
Эксперт С++
1826 / 1184 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
13.03.2014, 14:43 #17
TenGen, а почему тогда вы не используете подход Win API?
0
John Prick
831 / 764 / 154
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 3
13.03.2014, 14:49 #18
Тогда можно поступить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class AbstractParameter
{
public:
    virtual ~AbstractParameter(void) {}
protected:
    AbstractParameter(void) {}
};
 
struct StringParameter: public AbstractParameter
{
    string value;
};
 
struct IntParameter: public AbstractParameter
{
    int value;
};
Структуру команды я уже указывал:
C++
1
2
3
4
5
struct Command
{
    int type;
    SomeContainer<AbstractParameter*> params;
};
Вот объекты типа Command вам и стоит хранить в массиве, а параметры команды - в контейнере params.

Однако, когда вы будете обращаться к конкретным параметрам, вам всё равно придётся как-то выяснять их тип. Толи с помощью dynamic_cast, толи ещё каким-нибудь способом (например, паттерн visitor есть на этот случай).

Возможно, вам стоит подумать, нельзя ли как-то сделать параметры команды одного типа.
0
TenGen
Будущее рядом
99 / 97 / 20
Регистрация: 06.03.2014
Сообщений: 342
13.03.2014, 14:54  [ТС] #19
Ilot, я о таком не слышал) можно подробнее?

John Prick, думаю вот...
0
Ilot
Эксперт С++
1826 / 1184 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
13.03.2014, 14:59 #20
У любого приложения на Windows есть очередь т.н. сообщей. Т.е. любое событие происходящее с приложением описывается как структура типа MSG. Одно поле идентифицируется как код команды, смысл остальных полей зависит от типа сообщения. Одним словом гуглите оконная процедура там все будет понятно.
0
TenGen
Будущее рядом
99 / 97 / 20
Регистрация: 06.03.2014
Сообщений: 342
13.03.2014, 15:02  [ТС] #21
Ilot, ну я так примерно и делаю, только кол-во параметров у меня может быть совершенно разным
0
Ilot
Эксперт С++
1826 / 1184 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
13.03.2014, 15:10 #22
Количество параметров два: тип команды и строка с конкретными значениями. Т.е. так же как и передача параметров командной строки.
0
TenGen
Будущее рядом
99 / 97 / 20
Регистрация: 06.03.2014
Сообщений: 342
13.03.2014, 15:14  [ТС] #23
Ilot, понятно, благодарю. Я просто задумался, можно ли задачу, описанную в заголовке, решить как нибудь красиво
0
13.03.2014, 15:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 15:14
Привет! Вот еще темы с ответами:

Сравнение переменных разных типов - C++
Здравствуйте. Столкнулся с проблемой не совпадения типов данных. Есть переменная string str, которая, к примеру, имеет значение &quot;1245&quot;....

Использование разных типов указателей - C++
Здравствуйте! Программа должна засерать переменную n, а вместо этого она забивает мусором переменную upper. Можете подсказать в чём дело? ...

Разделение строки на переменные разных типов - C++
Помогите с разделением строки Есть String dat dat = &quot;40.10 50.10 60.10 70.10 11:15:23 4-03-2012&quot; необходимо разделить ее на 4...

Функция приема разных типов в классе - C++
Сразу скажу что надо. Есть функция pow(), так вот она принимает разные типы данных. У меня класс хочу сделать тоже самое. Подскажите как, я...


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

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

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