Я использую qt5.5.1 с qt-creator 3.5.1 и пытаюсь установить стиль на GeoDataPlacemark с GeoDataStyle. Он работал нормально, но после обновления Marble для использования общих указателей вместо прямых указателей моя программа seg faults. Используя GDB, я проследил ошибку seg в строке, где я создаю QSharedPointer с прямым указателем styleArch. Кто-нибудь есть идея, что может быть проблемой?Seg Ошибка при использовании QSharedPointers в qt5
Мой старый код следующим образом:
styleArch->setIconStyle(*icon);
place->setStyle(styleArch); //Old Marble
Новый код, который использует новый Marble API выглядит следующим образом:
styleArch->setIconStyle(*icon);
place->setStyle(Marble::GeoDataStyle::Ptr(styleArch)); //New Marble
Спасибо за ваше время!
привет, спасибо за ваш быстрый ответ! Ваш комментарий указал мне в правильном направлении. Я создал новую переменную типа QSharedPointer следующим образом: 'styleArchSP = QSharedPointer (новый GeoDataStyle); styleArchSP-> комплектIconStyle (* значок); место-> комплектStyle (styleArchSP); ' –
Точно. Создавая экземпляр sharedpointer как styleArchSP, вы гарантируете, что его жизненный цикл выходит за пределы вызова setStyle. Помогло ли это решить проблему с seg fault? –
Да, это так. Большое спасибо! –