[gdal-dev] OGRGeometry copy constructor

Simon Hege simonhege at hotmail.com
Fri Jun 5 08:27:34 PDT 2015


Hi,

Looking at the code of GDAL 2.0 (but also 1.x), I noticed that the OGRGeometry class (and the derived classes) do not respects the Rule of 3 : there is a destructor and no copy constructor or assignment operator. It seems to me that this may lead to memory leaks on OGRSpatialReference (for example when using std::vector<OGRPoint> and not std::vector<OGRPoint*>).
This is not an issue when using the C API because the clone() method is used.
Am I well understanding the API ? 

Various solutions exists:
1) defines private copy constructors and assignment operators (eg. libkml does this with a macro on each class: LIBKML_DISALLOW_EVIL_CONSTRUCTORS)
2) implements these methods, and manage poSRS the same way that clone()  does.
3) do nothing (and document it somewhere)

If needed I may open an issue and/or send a patch.

Best regards,
Simon HEGE
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20150605/8473bf27/attachment.html>


More information about the gdal-dev mailing list