The Procesing plugins provide a method to get parameter from string.
The string can be based on the QGIS parameter `asScriptCode` / `fromScriptCode` string definition or
on the QGIS definitions used in description file.
and do it also in QgsMapToolAddEllipse, QgsMapToolAddRectangle,
QgsMapToolAddRegularPolygon and QgsMapToolAddCircularString that
use a similar pattern
spotted by Valgrind when quitting the app:
```
==80600== Invalid read of size 8
==80600== at 0x61C0F54: swap<QgsMapToolCaptureRubberBand*> (move.h:193)
==80600== by 0x61C0F54: reset (unique_ptr.h:400)
==80600== by 0x61C0F54: QgsMapToolCapture::deleteTempRubberBand() (qgsmaptoolcapture.cpp:848)
==80600== by 0x4DF1017: QgsMapToolAddCircle::clean() (qgsmaptooladdcircle.cpp:135)
==80600== by 0x4DF1390: QgsMapToolAddCircle::~QgsMapToolAddCircle() (qgsmaptooladdcircle.cpp:41)
==80600== by 0x4DF36BC: QgsMapToolCircle2TangentsPoint::~QgsMapToolCircle2TangentsPoint() (qgsmaptoolcircle2tangentspoint.cpp:44)
==80600== by 0x4E9516E: QgsAppMapTools::~QgsAppMapTools() (qgsappmaptools.cpp:185)
==80600== by 0x4B327D2: operator() (unique_ptr.h:81)
==80600== by 0x4B327D2: operator() (unique_ptr.h:75)
==80600== by 0x4B327D2: reset (unique_ptr.h:402)
==80600== by 0x4B327D2: QgisApp::~QgisApp() (qgisapp.cpp:1725)
==80600== by 0x4B32E2C: QgisApp::~QgisApp() (qgisapp.cpp:1787)
==80600== by 0x1163F7: main (main.cpp:1645)
==80600== Address 0x2b25e608 is 200 bytes inside a block of size 616 free'd
==80600== at 0x483D1CF: operator delete(void*, unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==80600== by 0x4E9516E: QgsAppMapTools::~QgsAppMapTools() (qgsappmaptools.cpp:185)
==80600== by 0x4B327D2: operator() (unique_ptr.h:81)
==80600== by 0x4B327D2: operator() (unique_ptr.h:75)
==80600== by 0x4B327D2: reset (unique_ptr.h:402)
==80600== by 0x4B327D2: QgisApp::~QgisApp() (qgisapp.cpp:1725)
==80600== by 0x4B32E2C: QgisApp::~QgisApp() (qgisapp.cpp:1787)
==80600== by 0x1163F7: main (main.cpp:1645)
==80600== Block was alloc'd at
==80600== at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==80600== by 0x4E956E2: QgsAppMapTools::QgsAppMapTools(QgsMapCanvas*, QgsAdvancedDigitizingDockWidget*) (qgsappmaptools.cpp:128)
==80600== by 0x4B6409B: make_unique<QgsAppMapTools, QgsMapCanvas*&, QgsAdvancedDigitizingDockWidget*&> (unique_ptr.h:857)
==80600== by 0x4B6409B: QgisApp::QgisApp(QSplashScreen*, bool, bool, QString const&, QString const&, QWidget*, QFlags<Qt::WindowType>) (qgisapp.cpp:1052)
==80600== by 0x1157A7: main (main.cpp:1377)
```
The reason was that the mParentTool of QgsMapToolCapture was already
destroyed