ModuleParams: remove parent in destructor

This allows for dynamic deletion of children objects (in most cases this
is not used).

Uses ~100B memory.
This commit is contained in:
Beat Küng
2021-09-08 10:05:13 +02:00
committed by Daniel Agar
parent f09b34007e
commit 810d2e9497
@@ -61,9 +61,14 @@ public:
if (parent) { if (parent) {
parent->_children.add(this); parent->_children.add(this);
} }
_parent = parent;
} }
virtual ~ModuleParams() = default; virtual ~ModuleParams()
{
if (_parent) { _parent->_children.remove(this); }
}
// Disallow copy construction and move assignment. // Disallow copy construction and move assignment.
ModuleParams(const ModuleParams &) = delete; ModuleParams(const ModuleParams &) = delete;
@@ -93,4 +98,5 @@ protected:
private: private:
/** @list _children The module parameter list of inheriting classes. */ /** @list _children The module parameter list of inheriting classes. */
List<ModuleParams *> _children; List<ModuleParams *> _children;
ModuleParams *_parent{nullptr};
}; };