У меня, наверное, тривиальная проблема. Я пытаюсь использовать библиотеку GEOS. У меня есть свои функции, использующие библиотеку GEOS в моей собственной библиотеке. И я хочу использовать эту библиотеку в моем плагине QGIS, написанном на C ++. Проблема в том, что функции в моей библиотеке работают с geos::geom::Geometry
, но в плагине QGIS есть GEOSGeometry
, Я думал, что это то же самое, но, вероятно, это не так.
Может кто-нибудь объяснить мне разницу между этими двумя и дать мне совет, как преобразовать их друг в друга или сказать, что я делаю неправильно? Благодарю.
GEOSGeometry
это typedef
для структуры, используемой в C (не C ++) API. В официальной документации указано, что использование C API предпочтительнее C ++ API, поскольку оно может быть более стабильным (с точки зрения будущих изменений).
Я не уверен, что вы можете просто разыграть структуры (я бы посоветовал против этого). Я предлагаю вам использовать C API вместо C ++ API.
Нет, вы не можете просто приводить между типами GEOS C API GEOSGeometry
и C ++ API-типы из иерархии с корнем в geos::geom::Geometry
учебный класс.
Вы можете, однако, конвертировать ваши геометрии, используя WKB в качестве формата обмена, между C API и объектами C ++ API.