qt-creator 3.5.1でqt5.5.1を使用していて、GeoDataStyleを使用してGeoDataPlacemarkにスタイルを設定しようとしています。それは正常に動作していましたが、直接ポインターの代わりに共有ポインターを使用するMarbleのアップデートの後に、私のプログラムのsegフォールトが発生しました。 GDBを使用して、私はstyleArchダイレクトポインタでQSharedPointerを作成する行にsegフォルトをトレースしました。誰が問題になるのか考えている人はいますか?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 (新しいGeoDataStyle);styleArchSP-> setIconStyle(* icon); place-> setStyle(styleArchSP); ' –
正確に。 styleArchSPとしてsharedpointerをインスタンス化することにより、その存続期間がsetStyleの呼び出しを越えていることを保証します。これはseg faultの問題を解決しましたか? –
はい、そうでした。どうもありがとうございました! –