[gdal-dev] OGRGeometry copy constructor
Even Rouault
even.rouault at spatialys.com
Fri Jun 5 08:46:20 PDT 2015
Simon,
> 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.
Indeed, the Rule of 3 is not currently really implemented in the C++ API.
> 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.
Option 2 looks good to me if you want to prepare a patch for it. Test cases in
autotest/cpp/test_ogr.cpp would be appreciated.
Even
--
Spatialys - Geospatial professional services
http://www.spatialys.com
More information about the gdal-dev
mailing list