diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp index 2bcd9589798..5239ef2fb12 100644 --- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp +++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp @@ -2764,11 +2764,11 @@ enum slackType { Grower = -1, Shrinker = 1 }; static auto createSlack(QSimplexConstraint *sizeConstraint, qreal interval, slackType type) { struct R { - QSimplexVariable *slack; + QConcreteSimplexVariable *slack; QSimplexConstraint *limit; }; - QSimplexVariable *slack = new QSimplexVariable; + auto slack = new QConcreteSimplexVariable; sizeConstraint->variables.insert(slack, type); QSimplexConstraint *limit = new QSimplexConstraint; @@ -2783,7 +2783,7 @@ bool QGraphicsAnchorLayoutPrivate::solvePreferred(const QList &variables) { QList preferredConstraints; - QList preferredVariables; + QList preferredVariables; QSimplexConstraint objective; // Fill the objective coefficients for this variable. In the diff --git a/src/widgets/graphicsview/qsimplex_p.cpp b/src/widgets/graphicsview/qsimplex_p.cpp index 4586e0d008c..326aa1c36b5 100644 --- a/src/widgets/graphicsview/qsimplex_p.cpp +++ b/src/widgets/graphicsview/qsimplex_p.cpp @@ -156,28 +156,28 @@ bool QSimplex::setConstraints(const QList &newConstraints) QList artificialList; for (int i = 0; i < constraints.size(); ++i) { - QSimplexVariable *slack; - QSimplexVariable *surplus; - QSimplexVariable *artificial; + QConcreteSimplexVariable *slack; + QConcreteSimplexVariable *surplus; + QConcreteSimplexVariable *artificial; Q_ASSERT(constraints[i]->helper.first == 0); Q_ASSERT(constraints[i]->artificial == nullptr); switch(constraints[i]->ratio) { case QSimplexConstraint::LessOrEqual: - slack = new QSimplexVariable; + slack = new QConcreteSimplexVariable; slack->index = ++variableIndex; constraints[i]->helper.first = slack; constraints[i]->helper.second = 1.0; break; case QSimplexConstraint::MoreOrEqual: - surplus = new QSimplexVariable; + surplus = new QConcreteSimplexVariable; surplus->index = ++variableIndex; constraints[i]->helper.first = surplus; constraints[i]->helper.second = -1.0; Q_FALLTHROUGH(); case QSimplexConstraint::Equal: - artificial = new QSimplexVariable; + artificial = new QConcreteSimplexVariable; constraints[i]->artificial = artificial; artificialList += constraints[i]->artificial; break; diff --git a/src/widgets/graphicsview/qsimplex_p.h b/src/widgets/graphicsview/qsimplex_p.h index 4ae4e544ca5..a64208f7740 100644 --- a/src/widgets/graphicsview/qsimplex_p.h +++ b/src/widgets/graphicsview/qsimplex_p.h @@ -29,8 +29,14 @@ struct QSimplexVariable qreal result; int index; +protected: + QT_DECLARE_RO5_SMF_AS_DEFAULTED(QSimplexVariable) }; +// "pure" QSimplexVariable without the protected destructor +struct QConcreteSimplexVariable final : QSimplexVariable +{ +}; /*! \internal @@ -59,8 +65,8 @@ struct QSimplexConstraint final qreal constant; Ratio ratio; - std::pair helper; - QSimplexVariable * artificial; + std::pair helper; + QConcreteSimplexVariable *artificial; void invert();