|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.04.2013, 14:35 | #1 |
Пользователь
Регистрация: 05.12.2012
Сообщений: 67
|
Создание переменной по имени типа
Доброго времени суток.
Столкнулся с любопытной задачкой, которая возникала у многих, я почти уверен: создать переменную, зная её тип в виде строковой переменной (в моём случае QString). Казалось бы, можно перегрузить функцию по возвращаемому значению, но этого делать не советуют, да и по рукам бить будут . Есть у кого идеи как реализовать? Помнится, был один метод, из серии: Код:
|
26.04.2013, 14:36 | #2 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Код:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
26.04.2013, 14:47 | #3 |
Пользователь
Регистрация: 05.12.2012
Сообщений: 67
|
|
26.04.2013, 17:53 | #4 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Код:
|
26.04.2013, 18:13 | #5 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Как бы boost не совсем стандартная библиотека. (хотя с ним решение будет красивее)
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
26.04.2013, 18:50 | #6 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Но я бы поостерёгся так сразу называть boost::any красивым решением. Может быть сегодня ситуация изменилась. Но когда я сам однажды заглянул под капот, то увидел следующую ужасающую картинку: 1. Ограниченный (например, не умеет работать с массивами) 2. Не эффективен (постоянно использует тормознутую new для хранения своего объекта). То есть, он даже никак не оптимизирован для хранения маленьких объектов. Внутри, эни создает объект через new, и сохраняет его как void* То есть, он стабильно тратит sizeof(void*) на это дело. А между тем, основная область применения эни - это передача данных любого типа через нешаблонные функции. То есть, в большинстве случаев, эни выступает в качестве аргумента функций. А аргументы функций как правило - либо всякие инты, либо всякие ссылки/указатели. Получается, что в большинстве случаев, размер сохраняемого объекта опять таки укладывается в sizeof(void*). Это означает, что в большинстве случаев, вместо использования тормознутой: Код:
Код:
--------- |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод имени переменной C++ | Alendorff | Помощь студентам | 2 | 05.03.2013 06:37 |
Ошибка в имени типа | Arnild | C# (си шарп) | 0 | 27.03.2012 09:01 |
Возможно ли в массив типа char записать первым элементом значение переменной типа float? | Green Gin | Общие вопросы C/C++ | 2 | 05.12.2011 01:50 |
Динамическое формирование имени переменной... | Kvinto | Общие вопросы Delphi | 9 | 17.11.2009 17:56 |
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) | Arkuz | Общие вопросы Delphi | 12 | 25.09.2007 20:47 |