Qt Creator 3.5.1에서 qt5.5.1을 사용 중이며 GeoDataStyle을 사용하여 GeoDataPlacemark에 스타일을 설정하려고합니다. 그것은 잘 작동하는 데 사용하지만 대리 포인터를 직접 포인터 대신 공유 포인터를 사용하여 업데이트 후 내 프로그램 seg faults. GDB를 사용하여 segault를 styleArch 직접 포인터로 QSharedPointer를 만드는 라인으로 추적했습니다. 누구든지 문제가 될 수있는 아이디어가 있습니까? 다음과 같이 새로운 대리석 API를 사용Qt5에서 QSharedPointers를 사용할 때 Seg 오류가 발생했습니다.
styleArch->setIconStyle(*icon);
place->setStyle(styleArch); //Old Marble
새로운 코드는 다음과 같습니다 : 시간에 대한
styleArch->setIconStyle(*icon);
place->setStyle(Marble::GeoDataStyle::Ptr(styleArch)); //New Marble
감사를 다음과 같이
내 예전의 코드이었다!
안녕하세요, 빠른 답장을 보내 주셔서 감사합니다. 귀하의 의견은 올바른 방향으로 나를 지적했습니다. 다음과 같이 QSharedPointer 유형의 새 변수를 만들었습니다. 'styleArchSP = QSharedPointer (new GeoDataStyle); styleArchSP-> setIconStyle (* icon); place-> setStyle (styleArchSP); ' –
정확합니다. sharedArray를 styleArchSP로 인스턴스화하면 setStyle 호출 이후의 수명을 연장 할 수 있습니다. 이 문제로 segault 문제가 해결 되었습니까? –
예, 그랬습니다. 고마워요! –