我正在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故障问题? –
是的,它的确如此。非常感谢你! –