我正在qt-creator 3.5.1中使用qt5.5.1,並試圖用GeoDataStyle設置GeoDataPlacemark上的樣式。它以前工作正常,但大理石更新後使用共享指針,而不是直接指針,我的程序段故障。使用GDB,我已經將seg fault追溯到我用styleArch直接指針創建QSharedPointer的那一行。有沒有人有一個想法可能是什麼問題?qt5中使用QSharedPointers時出現Seg錯誤
我的舊代碼如下:
styleArch->setIconStyle(*icon);
place->setStyle(styleArch); //Old Marble
新的代碼,它使用了新的大理石API如下:
styleArch->setIconStyle(*icon);
place->setStyle(Marble::GeoDataStyle::Ptr(styleArch)); //New Marble
感謝您的時間!
嗨,感謝您的快速回復!您的評論指出了我的正確方向。我創建了一個類型爲QSharedPointer的新變量,如下所示: 'styleArchSP = QSharedPointer (new GeoDataStyle); styleArchSP-> setIconStyle(* icon); place-> setStyle(styleArchSP);' –
沒錯。通過將共享指針實例化爲styleArchSP,確保它的生命週期超出了調用setStyle的範圍。這是否解決您的seg故障問題? –
是的,它的確如此。非常感謝你! –