Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 53
1

Как создать переменную с динамическим типом

30.12.2018, 15:41. Показов 522. Ответов 11
Метки нет (Все метки)

Мне в зависимости от условия нужно создать переменную либо int, либо string, так чтоб потом с ней можно было работать вне функции, как это реализовать????

Добавлено через 2 минуты
То есть например:
C++
1
2
3
4
5
6
7
8
if (...)
{
   int ob; // ну типу вы поняли 
}
else
{
   std::string ob; // ну типу вы поняли 
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.12.2018, 15:41
Ответы с готовыми решениями:

Нужно перевести переменную с типом данных string в переменную с типом данных REAL
Итак, нужно перевести переменную с типом данных string в переменную с типом данных REAL. Переменную...

Как правильно объявить переменную с типом данных Number?
Пытаюсь разобраться с типами данных Oracle - не могу понять, как правильно объявить переменную с...

Как создать таблицу с динамическим именем?
Есть ли возможность создать таблицу с именем, являющимся значением одного из текстовых полей другой...

Как правильно создать динамическим массивом
Надо найти маршрут коня на доске произвольного, ограниченного только памятью машины, размера....

11
142 / 91 / 34
Регистрация: 30.01.2018
Сообщений: 464
30.12.2018, 15:59 2
По-моему никак, но вы можете использовать auto (но только для инициализации):
C++
1
2
auto a;  //ошибка    
cin>> a; //ошибка
C++
1
2
3
int a;
auto b=a;
cin>>b; //все ок
Либо вы можете сами написать класс, который будет подстраиваться под ваши нужды
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 53
30.12.2018, 16:05  [ТС] 3
Ну а нет что то типу как в си шарпе, создать тип object а потом привести к нужному
0
Эксперт C
26075 / 16265 / 3494
Регистрация: 24.12.2010
Сообщений: 35,651
30.12.2018, 16:06 4
C_programmer, Есть такая штука - объединение (union)
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 53
30.12.2018, 16:08  [ТС] 5
Не ну у меня допустим массив string а я создаю массив int иstring

Добавлено через 18 секунд
Через union

Добавлено через 45 секунд
Так?
0
669 / 472 / 123
Регистрация: 07.05.2013
Сообщений: 1,730
Записей в блоге: 1
30.12.2018, 16:30 6
можно воспльзоваться бустом:

C++
1
2
3
4
5
6
7
8
#include <boost/any.hpp>
#include <string>
 
...
 
boost::any a = 10; // число
a = std::string ("Hello world"); // строка
std::string s = boost::any_cast<std::string> (a); // получаем данные
Где-то читал, что в c++17 any переехала в std
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 53
30.12.2018, 16:31  [ТС] 7
Думаю в с++ билдере это не прокатит там с++ постарее
0
669 / 472 / 123
Регистрация: 07.05.2013
Сообщений: 1,730
Записей в блоге: 1
30.12.2018, 16:47 8
boost точно можно прикрутить к билдеру
0
142 / 91 / 34
Регистрация: 30.01.2018
Сообщений: 464
30.12.2018, 16:50 9
Самое правильное здесь - это либо воспользоваться Бустом (наилучший вариант), либо писать собственный класс (если руки не кривые, то попробуй). union не всегда поможет, так как с string не работает https://bytes.com/topic/c/answ... mber-union
0
Нарушитель
1487 / 1289 / 485
Регистрация: 16.08.2014
Сообщений: 5,417
Записей в блоге: 1
30.12.2018, 16:57 10
C_programmer, может "type erasure idiom"?

Добавлено через 1 минуту
Цитата Сообщение от Pashka Durov Посмотреть сообщение
Самое правильное здесь
самое правильное здесь не говорить, что является самым правильным.
0
669 / 472 / 123
Регистрация: 07.05.2013
Сообщений: 1,730
Записей в блоге: 1
30.12.2018, 17:03 11
_stanislav,
Цитата Сообщение от _stanislav Посмотреть сообщение
type erasure idiom
-- boost:any -- это оно и есть
0
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,051
Записей в блоге: 1
30.12.2018, 22:30 12
Как можно изменить параметр шаблона (template)?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2018, 22:30

Как создать индексатор с динамическим массивом?
Здравствуйте. У меня создано два класса, один - шаблон для объекта, а второй - индексатор, хранящий...

Как создать статическую переменную в Паскале? Переменную, которая сохраняет значение, при выходе из функции
Пробую так, но, естественно, ничего не получается: procedure a; var s : integer; begin s :=...

Как создать поиск с динамическим списком и зависимыми полями?
Здравствуйте Я новичек. Помогите, пожалуйста, создать поиск с динамическим списком и зависимыми...

Как создать столбец типом char?
chancellery=&gt; create table t(name char not null); CREATE TABLE chancellery=&gt; \d+ t ...


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

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

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