Динамическое создание имени переменной

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Динамическое создание имени переменной

Re: Динамическое создание имени переменной

WinMain » 11 дек 2007, 16:05

На С++ можно сделать обращение к переменной по её строковому имени, если для этого использовать ассоциативные контейнеры, например std::map<>. Тогда в качестве ключевого параметра нужно указать класс строки, а хранимое значение будет того типа, который нас интересует, например:

std::map<std::string, int> _map;

_map["first"] = 1;
_map["second"] = _map["first"] + 1;

Re: Динамическое создание имени переменной

Фоб » 11 дек 2007, 14:52

Правильно пишет Romeo.

Разве что добавлю, что с помощью макросов можно создать иллюзию динамического создания переменных.

Макросы в С++ - это вроде как функции, которые работают на этапе компиляции, формируя часть кода.

Например:

Код: Выделить всё

	#define defarr(t, name, j, n, v) t* name ## j = new t[n * j]; for (int i = 0; i < n * j; i++) (name ## j)[i] = v;

	defarr(int, m, 1, 5, 0);
	defarr(int, m, 2, 5, 0);
	defarr(int, m, 3, 5, 0);
На этапе компиляции вместо строк defarr(), появляется код создания массивов int m1[5], int m2[10], int m3[15], и заполнения их нулями.

А чтобы на этапе исполнения "получать данные переменной, имя которой находится в другой переменной", используйте указатели, и сможете "получать данные, адрес которых находится по другому адресу" (то же самое, но в терминах системного программирования).

Re: Динамическое создание имени переменной

Romeo » 23 ноя 2007, 11:28

На С++ такого сделать нельзя по той причине, что информация об именах после сборки в релизе выполняемой программе просто отсутствует. Перл это позволяет по той причине, что это скриптовый язык, не предусматривающий компиляции в полном смысле этого слова.

Динамическое создание имени переменной

SerjVarshavskiy » 04 ноя 2007, 13:24

День добрый.

например в perl есть возможность получить данные переменной,
имя которой находится в другой переменной (string)

perl:
$testVar = "YES!\n";
$strVarName = "testVar";
print "$$strVarName"; # YES!

подскажите, как подобное реализовать в Qt/C++ ?

Вернуться к началу