Присвоить значение, аналог findChild |
Здравствуйте, гость ( Вход | Регистрация )
Присвоить значение, аналог findChild |
nikita |
20.3.2013, 11:51
Сообщение
#1
|
Студент Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: 0 |
Заранее прошу прощения за столь глупый вопрос) Есть код:
Суть в том, что в методе writeFromFile из файла считывается 2 поля : 'x' и '5'. Можно ли как-то переменной с именем 'x' присвоить считанное значение(в данном случае 5). Если бы Х был полем класса MyClass, то можно было бы воспользоваться методом findChild(), а в этой ситуации я в тупике. Переменных должно быть много и писать процедуру разбора считанной строки с кучей IF-ов не хочется. Подскажите как быть. Сообщение отредактировал nikita - 20.3.2013, 11:51 |
|
|
lanz |
20.3.2013, 12:55
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Создать QMap<QString, int>, ключ в QMap будет название переменной, а значение - ее значение.
|
|
|
Iron Bug |
20.3.2013, 15:53
Сообщение
#3
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
не очень понятно, в чём вопрос.
x - это глобальная переменная или что? если глобальная, то кто мешает её напрямую юзать? а если не глобальная, то можно передавать указатель на неё как параметр или сделать её статическим членом класса, например. да куча вариантов, вообще говоря. |
|
|
nikita |
21.3.2013, 7:34
Сообщение
#4
|
Студент Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: 0 |
не очень понятно, в чём вопрос. x - это глобальная переменная или что? если глобальная, то кто мешает её напрямую юзать? а если не глобальная, то можно передавать указатель на неё как параметр или сделать её статическим членом класса, например. да куча вариантов, вообще говоря. X - глобальная переменная не имеющая никакого отношения к классу. Вопрос в том, как переменной с именем QString("x") присвоить значенине. Да, если сделать Х членом класса, то можно юзать метод findChild(), но этот вариант мне не подходит! |
|
|
Алексей1153 |
21.3.2013, 7:36
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
nikita |
21.3.2013, 7:42
Сообщение
#6
|
Студент Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: 0 |
Создать QMap<QString, int>, ключ в QMap будет название переменной, а значение - ее значение. К сожалению этот вариант мне не подойдет! Получать значение переменной через QMap медленнее чем на прямую по имени переменной, а обращений к этой(им) переменной у меня будет очень много. Поэтому мне кажется, что лучше пожертвовать временем на разбор считанных из файла данных(преременных должно быть 20-25 штук), чем каждый раз тратить лишнее время на обращение к QMap[]. |
|
|
Алексей1153 |
21.3.2013, 7:49
Сообщение
#7
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Получать значение переменной через QMap медленнее чем на прямую по имени переменной, а обращений к этой(им) переменной у меня будет очень много. Поэтому мне кажется, что лучше пожертвовать временем на разбор считанных из файла данных(преременных должно быть 20-25 штук), чем каждый раз тратить лишнее время на обращение к QMap[]. http://www.youtube.com/watch?v=lj96YnI9El8 у меня тысячи переменных так работают в реальном времени, и ничего. Кроме того, иного способа, чем ассоциация, тут не придумаешь а про сравнение времени считывания из файла и обращения к мапе - это совсем забавно ) Это как почта России и электронная почта Сообщение отредактировал Алексей1153 - 21.3.2013, 8:06 |
|
|
lanz |
21.3.2013, 8:25
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата обращений к этой(им) переменной у меня будет очень много Если обращений к конкретной переменной много(очень много(очень очень много(то есть сделано профилирование на готовой программе и доказано что затык в этом месте)), то ее можно закешировать:
А вообще это преждевременная оптимизация. Сообщение отредактировал lanz - 21.3.2013, 8:26 |
|
|
nikita |
21.3.2013, 8:48
Сообщение
#9
|
Студент Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: 0 |
Всем спасибо! Как я и сказал в первом сообщении - вопрос был довольно глупым)
|
|
|
ViGOur |
21.3.2013, 9:59
Сообщение
#10
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Можно сделать подобное если вынести все твои переменные в отдельный класс, и сделать его сериализацию (переопределить операторы ввода вывода), что-то вроде:
Единственное тебе нужно будет поддерживать актуальность сериализуемых данных и все...
|
|
|
Текстовая версия | Сейчас: 2.1.2025, 20:38 |