Название: Указатель на тип в QVariant Отправлено: deMax от Декабря 03, 2014, 12:26 Есть QVariant a = (int)5;
Можно ли получить что то типа - int* b = &a.toInt(); Название: Re: Указатель на тип в QVariant Отправлено: Пантер от Декабря 03, 2014, 12:31 toInt() возвращает временный объект, на который можно сослаться только константной ссылкой.
Название: Re: Указатель на тип в QVariant Отправлено: deMax от Декабря 03, 2014, 12:38 Да я понимаю что этот код не будет работать, можно ли как то достучаться до ячейки памяти где этот int/QString хранится, нужно только для чтения?
Есть массивы с разными типами, хочется загнать все один с QVariant, и указатели раздать. Название: Re: Указатель на тип в QVariant Отправлено: Пантер от Декабря 03, 2014, 12:41 Что-то попахивает фигней какой-то. Конкретизируй задачу.
Название: Re: Указатель на тип в QVariant Отправлено: deMax от Декабря 03, 2014, 12:46 Настройки программы хранятся в QMap. Хочу передать указатели на поля нужным классам, чтоб синхронизацию не городить.
Название: Re: Указатель на тип в QVariant Отправлено: Igors от Декабря 03, 2014, 12:53 Да я понимаю что этот код не будет работать, можно ли как то достучаться до ячейки памяти где этот int/QString хранится, нужно только для чтения? Такой ячейки может просто не быть, ну точнее в ячейке варианта для int может находиться совсем не int. Вариант хранит что угодно и конвертирует. Можно хранить адрес QVariant, но и это не очень хорошо. Не используйте здесь адреса, не лепятся ониЕсть массивы с разными типами, хочется загнать все один с QVariant, и указатели раздать. Настройки программы хранятся в QMap. Хочу передать указатели на поля нужным классам, чтоб синхронизацию не городить. Передавайте ссылки на QVariant Название: Re: Указатель на тип в QVariant Отправлено: Пантер от Декабря 03, 2014, 12:55 Я с настройками делал через паттерн Обсервер. Синглтон настроек. Классы подписываются у него на изменение ключа.
Название: Re: Указатель на тип в QVariant Отправлено: deMax от Декабря 08, 2014, 11:59 Пантер , спасибо.
А можно как то реализовать такое: template <class T> void add(QString key, T* data) { QVariant::Type type = getType(T); map[key] = MapData(data, type); или тут только антипаттерн копипаст работает? Название: Re: Указатель на тип в QVariant Отправлено: Пантер от Декабря 08, 2014, 12:40 Не понял вопроса. Что делает этот метод?
Название: Re: Указатель на тип в QVariant Отправлено: deMax от Декабря 08, 2014, 13:26 Не понял вопроса. Что делает этот метод? Вернет тип, для int это будет QVariant::int ... (даже не вернет, а заменит в процессе компиляции).Просто в шаблоны ни switch по типу не вставить ни еще чего, а нужно очень. Название: Re: Указатель на тип в QVariant Отправлено: Igors от Декабря 08, 2014, 13:41 A почему не так
Код
Название: Re: Указатель на тип в QVariant Отправлено: deMax от Декабря 08, 2014, 14:01 Igors , спасибо получилось. QVariant::fromValue(*data).type()
Код: class IObserver У меня гуи загоняет свои переменные в массив, а потом обсервер их через set обновляет. |