Название: Доступ к объектам с однотипными названиями Отправлено: klim от Ноябрь 16, 2008, 00:41 Предположим, что есть n объектов с именами типа obj1, obj2, obj3 и т.д. Можно как-нибудь к ним получить доступ, используя цикл for или обязательно вручную в коде прописывать имя каждого?
Название: Re: Доступ к объектам с однотипными названиями Отправлено: Karl-Philipp от Ноябрь 16, 2008, 00:46 Можно, например, в некий контейнер поместить.
Название: Re: Доступ к объектам с однотипными названиями Отправлено: Detonator от Ноябрь 16, 2008, 09:16 Не уверен, но думаю так
#define obj(index) obj##index for(int i...) obj(i) = 5; Название: Re: Доступ к объектам с однотипными названиями Отправлено: BRE от Ноябрь 16, 2008, 09:37 Не уверен, но думаю так Не получиться, этот код после препроцессора развернется в:#define obj(index) obj##index for(int i...) obj(i) = 5; Код: for( int i...) obji = 5; Название: Re: Доступ к объектам с однотипными названиями Отправлено: klim от Ноябрь 16, 2008, 12:55 Можно, например, в некий контейнер поместить. Можно пример какой-нибудь?Вот во всяких JavaScript, ActionScript и т.п. есть функция eval(). По-моему так она называется. Т.е. если мы там напишем что-то вроде eval("obj"+i).prop = value; - транслятор нас поймет. Название: Re: Доступ к объектам с однотипными названиями Отправлено: pastor от Ноябрь 16, 2008, 13:33 Можно пример какой-нибудь? Сохраняй указатели на каждый объект в списке: Код: QList<Type *> list; Название: Re: Доступ к объектам с однотипными названиями Отправлено: Detonator от Ноябрь 16, 2008, 17:13 Можно, например, в некий контейнер поместить. Можно пример какой-нибудь?Вот во всяких JavaScript, ActionScript и т.п. есть функция eval(). По-моему так она называется. Т.е. если мы там напишем что-то вроде eval("obj"+i).prop = value; - транслятор нас поймет. Ну в Qt тоже есть поддержка скриптов, засунь объекты в скрипт и вызови evaluate :) Название: Re: Доступ к объектам с однотипными названиями Отправлено: lit-uriy от Ноябрь 16, 2008, 19:06 а можно использовать setObjectName, чтобы задать имена всем интерисующим объектам
и затем в цикле (например если это кнопки) findChild<QPushButton *>("button"+QString::num(i)); Название: Re: Доступ к объектам с однотипными названиями Отправлено: klim от Ноябрь 17, 2008, 22:36 а можно использовать setObjectName, чтобы задать имена всем интерисующим объектам Т.е. надо сначала пробежать setObjectName() по всем интересующим объектам и только потом можно обращаться к ним с помощью findChild?и затем в цикле (например если это кнопки) findChild<QPushButton *>("button"+QString::num(i)); Ну в Qt тоже есть поддержка скриптов, засунь объекты в скрипт и вызови evaluate :) брр... чего-то сложно как-то. Я всё-таки хочу что-нибудь на уровне ISO C++. Не очень даже понятно в какой момент работают они. При компиляции? Или во время работы программы?Сохраняй указатели на каждый объект в списке: Спасибо за пример. Это, пожалуй, самое подходящее.Код: QList<Type *> list; |