Russian Qt Forum
Ноябрь 23, 2024, 23:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамическое создание имени переменной  (Прочитано 9867 раз)
SerjVarshavskiy
Гость
« : Ноябрь 04, 2007, 13:57 »

День добрый.

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

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

подскажите, как подобное реализовать в Qt/C++ ?
Записан
Вячеслав
Гость
« Ответ #1 : Ноябрь 04, 2007, 14:19 »

perl - интерпритатор, C++ компилятор - в общем случае Подмигивающий Разницу знаем ?
В самом общем случае - ответ будет -"никак" Подмигивающий Если переменные наследники QObject'a то смотрим в сторону objectName проперти Подмигивающий
Записан
ритт
Гость
« Ответ #2 : Ноябрь 04, 2007, 14:33 »

а поинтеры на хрена были придуманы?
Записан
SerjVarshavskiy
Гость
« Ответ #3 : Ноябрь 04, 2007, 14:35 »

затем, что бы на вопрос написать какой-нибудь ответ КОДОМ
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Ноябрь 04, 2007, 14:36 »

Можно попробывать через Dynamic Properties. Помоему так будет дёшево и сердито Подмигивающий
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
SerjVarshavskiy
Гость
« Ответ #5 : Ноябрь 04, 2007, 14:40 »

perl - интерпритатор, C++ компилятор - в общем случае Подмигивающий Разницу знаем ?
В самом общем случае - ответ будет -"никак" Подмигивающий Если переменные наследники QObject'a то смотрим в сторону objectName проперти Подмигивающий

о, башое пасиб, чет сразу не сообразил про эту возможность с objectName
Записан
SerjVarshavskiy
Гость
« Ответ #6 : Ноябрь 04, 2007, 14:49 »

Можно попробывать через Dynamic Properties. Помоему так будет дёшево и сердито Подмигивающий

если можно подробнее (если это не QObject.ObectName)
новенький я в Qt  Обеспокоенный
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #7 : Ноябрь 04, 2007, 14:56 »

если можно подробнее (если это не QObject.ObectName)

Это QObject::setProperty(...), QObject::property()

Цитировать
In addition to properties defined using Q_PROPERTY in a class it is possible to dynamically add and remove properties to any QObject at run-time.

If setProperty is called with a property not statically defined using Q_PROPERTY it is automatically added as dynamic property and its value is stored in the object. The value can be queried using the property() method, just like with static properties.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Вячеслав
Гость
« Ответ #8 : Ноябрь 04, 2007, 15:06 »

а поинтеры на хрена были придуманы?
А для динамики они не катят - если ты не знаешь че ему присваивать - имя перемменой строиться в динамике - то ой Грустный А вообще IMHO это изврат - если такое потребовалось - ищем ошибку в проектировании проги Подмигивающий
Записан
Tam-Tam
Гость
« Ответ #9 : Ноябрь 05, 2007, 02:34 »

Нечто похожее есть в С++. Qt тут ни при чем.
Записан
vaprele07
Гость
« Ответ #10 : Ноябрь 05, 2007, 04:31 »

посмотри QMap, QHash
QMap<QString, QString> tags;
tags["testVar"] = "YES!\n";
strVarName = tags["testVar"];
Записан
Tam-Tam
Гость
« Ответ #11 : Ноябрь 05, 2007, 13:09 »

Может поможет...
#define concat(a, b) a ## b

int xy = 1;
printf("%d", concat(x, y));

Хотя врядли - динамически так не получится.
« Последнее редактирование: Ноябрь 05, 2007, 13:11 от Tam-Tam » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #12 : Ноябрь 06, 2007, 01:43 »

Вообще непонятно, нафига такое понадобилось?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.085 секунд. Запросов: 23.