crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Присвоить значение
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
lanz Дата 22.3.2013, 8:25
  Как мне кажется нужно идти от задачи.
Если есть много объектов, одинаково форматированных, то надо делать как предложил ViGOur
Если надо один раз загрузить/сохранить настройки программы, то надо использовать QSettings (http://qt-project.org/doc/qt-4.8/qsettings.html)
Если ??? то ???
PROFIT :lol:

Если серьезно, то в чем задача состоит?
Iron Bug Дата 21.3.2013, 16:18
 
Цитата(nikita @ 21.3.2013, 10:34) *
Да, если сделать Х членом класса, то можно юзать метод findChild(), но этот вариант мне не подходит!

собственно, почему не подходит? вообще, глобальные переменные обычно никто не делает глобальными просто так, врассыпную. делают один класс глобальных переменных и объявляют их все статическими. правда, я не знаю, умеeт ли Qt работать с именами статических членов класса. в конце концов, если нужна именно глобальная переменная для совместимости с какими-нибудь чужеродными компиляторами, то её можно сделать глобальной, а в классе глобальных переменных объявить линк и инициализировать его адресом этой переменной.
а в чистом С++ такой встроенной возможности нет. либо делать мап, как уже сказали, либо какие-то другие самодельные списки с именами.
ViGOur Дата 21.3.2013, 9:59
  Можно сделать подобное если вынести все твои переменные в отдельный класс, и сделать его сериализацию (переопределить операторы ввода вывода), что-то вроде:
struct CClass
{
    int m_a, m_b, m_c;
    CClass(int a, int b, int c): m_a(a), m_b(b), m_c(c){}
};

std::ostream &operator <<(std::ostream &stream, const CClass &c)
{
    stream << c.m_a << " " << c.m_b << " " << c.m_c;
    return stream;
}

std::istream &operator >>(std::istream &stream, CClass &c)
{
    stream >> c.m_a >> c.m_b >> c.m_c;

    return stream;
}

int main(int , char **)
{
    CClass c(1,2,3);

    std::cout << c << std::endl;
    std::cin >> c;
    std::cout << c << std::endl;

    return 0;
}
Единственное тебе нужно будет поддерживать актуальность сериализуемых данных и все...
nikita Дата 21.3.2013, 8:48
  Всем спасибо! Как я и сказал в первом сообщении - вопрос был довольно глупым)
lanz Дата 21.3.2013, 8:25
 
Цитата
обращений к этой(им) переменной у меня будет очень много


Если обращений к конкретной переменной много(очень много(очень очень много(то есть сделано профилирование на готовой программе и доказано что затык в этом месте)), то ее можно закешировать:
int my_var = my_map[var_name];
// много обращений к переменной


А вообще это преждевременная оптимизация.
Алексей1153 Дата 21.3.2013, 7:49
 
Цитата(nikita @ 21.3.2013, 10:42) *
Получать значение переменной через QMap медленнее чем на прямую по имени переменной, а обращений к этой(им) переменной у меня будет очень много. Поэтому мне кажется, что лучше пожертвовать временем на разбор считанных из файла данных(преременных должно быть 20-25 штук), чем каждый раз тратить лишнее время на обращение к QMap[].


http://www.youtube.com/watch?v=lj96YnI9El8

у меня тысячи переменных так работают в реальном времени, и ничего. Кроме того, иного способа, чем ассоциация, тут не придумаешь

а про сравнение времени считывания из файла и обращения к мапе - это совсем забавно ) Это как почта России и электронная почта
nikita Дата 21.3.2013, 7:42
 
Цитата(lanz @ 20.3.2013, 13:55) *
Создать QMap<QString, int>, ключ в QMap будет название переменной, а значение - ее значение.


К сожалению этот вариант мне не подойдет! Получать значение переменной через QMap медленнее чем на прямую по имени переменной, а обращений к этой(им) переменной у меня будет очень много. Поэтому мне кажется, что лучше пожертвовать временем на разбор считанных из файла данных(преременных должно быть 20-25 штук), чем каждый раз тратить лишнее время на обращение к QMap[].
Алексей1153 Дата 21.3.2013, 7:36
 
Цитата(nikita @ 21.3.2013, 10:34) *
Вопрос в том, как переменной с именем QString("x")

сделать ассоциацию имя->адрес переменной
nikita Дата 21.3.2013, 7:34
 
Цитата(Iron Bug @ 20.3.2013, 16:53) *
не очень понятно, в чём вопрос.
x - это глобальная переменная или что?
если глобальная, то кто мешает её напрямую юзать? а если не глобальная, то можно передавать указатель на неё как параметр или сделать её статическим членом класса, например. да куча вариантов, вообще говоря.


X - глобальная переменная не имеющая никакого отношения к классу. Вопрос в том, как переменной с именем QString("x") присвоить значенине. Да, если сделать Х членом класса, то можно юзать метод findChild(), но этот вариант мне не подходит!
Iron Bug Дата 20.3.2013, 15:53
  не очень понятно, в чём вопрос.
x - это глобальная переменная или что?
если глобальная, то кто мешает её напрямую юзать? а если не глобальная, то можно передавать указатель на неё как параметр или сделать её статическим членом класса, например. да куча вариантов, вообще говоря.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.4.2024, 1:59