![]() |
|
![]() ![]() ![]() |
|
ss |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
Здравствуйте. Нужна помощь с задачей:
есть контейнер(stl) (у меня QList<QString> data) есть итератор (у меня QList<QString>::itertor it_data). Необходимо разработать две функции которые будут: первая (QString PointerToStr(void *) ) сохранять адрес в строку и выдавать ее; вторая ( void* StrToPointer(QString *) ) выдавать адрес (ссылку) сохраненный в строке. Пример использования
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
XY-problem detected
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ss |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
нужна реализация самих функций
(переменная st в качестве буфера хранения ) |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
ss, ну так в чем проблема? реализуй!
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
ss, это реальная проблема или задание в школе/институте/на собеседовании? Если первое, то найди в вики статью про xy-problem, и, если понял о чём я, то выкладывай X
![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
borisbn, не знал, что это называется XY-problem. Спасибо, буду знать.
|
|||
|
||||
ss |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
это не задание в школе/институте/на собеседовании. Для моего проекта надо. У меня не получается правильно привести адрес к строковому типу и обратно .Взять буковки которые в строке и использовать их как адрес в памяти. Поэтому и надеюсь ,что добрая душа более опытная в QT c++ поделится своими идеями
Это сообщение отредактировал(а) ss - 23.8.2013, 14:32 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
ss, зачем тебе это надо? Подобная работа с указателями нужна исключительно для отладочных целей. Но для этого существуют отладчики. А сохранять, загружать и передавать по сети указатели не нужно вообще никогда, так как у разных процессов одни и те же данных хранятся в разных местах.
Ты определись, STL или Qt. У STL есть контейнеры std::vector и std::list. А у Qt: QList и QVector. для этого достаточно сделать каст указателя к типу size_t, затем это значение преобразовать в строку в виде hex (делай через QTextStream). А это наоборот. Используя QTextStream ты из строки получаешь size_t, затем кастишь к указателю. Но еще раз повторяю, скорее всего, ты что-то делаешь не так. |
|||
|
||||
ss |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
![]() мне это надо для быстрого доступа к классам Есть QList<Device>. Эти классы выстраиваются в дерево в (TreeWidget). При двойном клипе по пункту в дереве ,чтобы не искать в листе, преобразовать адрес в строку и на против пункта устройства ,в дереве, во второй колонке сохранять адрес на класс. не могли ли бы вы привести пример с кастамиbс QList<QString> Это сообщение отредактировал(а) ss - 2.9.2013, 14:30 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
ss, сделай наследника QTreeWidgetItem и добавь в него указатель устройство, как член класса.
|
|||
|
||||
ss |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
T.E.
QTreeWidgetItem *itm = iterator_Device; itm->settext(iterator_Device->name); //имя устройства кот. будет отображаться в дереве ? не могли ли бы Вы привести пример, пожалуйста. Это сообщение отредактировал(а) ss - 4.9.2013, 22:47 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
|
|||
|
||||
ss |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
bsa, спасибо
|
|||
|
||||
ss |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
вот код программы для метода предложенным bsa,
создаем класс наследник от QTreeWidgetItem
в дизайнере стягиваем QTreeWidget. Создаем два своих пункта
А для тех кто столкнется с проблемой, описанной вначале, вот реализация (действует на все незащищенные данные QVector, char* ... .Не работает на QList)
пример использования QVector<QString> v1; QVector<QString>::iterator it_v1; QString st = QPointerS::pointerToStr(it_v1); //сохранить адрес it_v1 = static_cast<QVector<QString>::iterator >( QPointerS::srtToPointer(&st) ); //восстановить |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |