diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 9abb0193ecd..41f05c78cfd 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -174,7 +174,7 @@ BaseAspects::BaseAspects() = default; */ BaseAspects::~BaseAspects() { - qDeleteAll(base()); + qDeleteAll(m_aspects); } /*! @@ -184,7 +184,7 @@ BaseAspects::~BaseAspects() */ BaseAspect *BaseAspects::aspect(Utils::Id id) const { - return Utils::findOrDefault(base(), Utils::equal(&BaseAspect::id, id)); + return Utils::findOrDefault(m_aspects, Utils::equal(&BaseAspect::id, id)); } /*! @@ -192,7 +192,7 @@ BaseAspect *BaseAspects::aspect(Utils::Id id) const */ void BaseAspects::fromMap(const QVariantMap &map) const { - for (BaseAspect *aspect : *this) + for (BaseAspect *aspect : m_aspects) aspect->fromMap(map); } @@ -201,7 +201,7 @@ void BaseAspects::fromMap(const QVariantMap &map) const */ void BaseAspects::toMap(QVariantMap &map) const { - for (BaseAspect *aspect : *this) + for (BaseAspect *aspect : m_aspects) aspect->toMap(map); } diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index dc259e84a66..61ad61cc5cf 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -93,14 +93,15 @@ protected: }; class QTCREATOR_UTILS_EXPORT BaseAspects - : private QList { - using Base = QList; BaseAspects(const BaseAspects &) = delete; BaseAspects &operator=(const BaseAspects &) = delete; public: + using const_iterator = QList::const_iterator; + using value_type = QList::value_type; + BaseAspects(); ~BaseAspects(); @@ -108,7 +109,7 @@ public: Aspect *addAspect(Args && ...args) { auto aspect = new Aspect(args...); - append(aspect); + m_aspects.append(aspect); return aspect; } @@ -116,7 +117,7 @@ public: template T *aspect() const { - for (BaseAspect *aspect : *this) + for (BaseAspect *aspect : m_aspects) if (T *result = qobject_cast(aspect)) return result; return nullptr; @@ -125,13 +126,13 @@ public: void fromMap(const QVariantMap &map) const; void toMap(QVariantMap &map) const; - using Base::append; - using Base::begin; - using Base::end; + const_iterator begin() const { return m_aspects.begin(); } + const_iterator end() const { return m_aspects.end(); } + + void append(BaseAspect *const &aspect) { m_aspects.append(aspect); } private: - Base &base() { return *this; } - const Base &base() const { return *this; } + QList m_aspects; }; class QTCREATOR_UTILS_EXPORT BoolAspect : public BaseAspect