summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2021-11-16 14:43:51 +0100
committerMarc Mutz <marc.mutz@qt.io>2021-11-17 14:19:13 +0100
commitec291f9974ba6d25148955a0b9e55b30c589a9be (patch)
tree43d1b461b0d0d482b03e16f83b333817a9ed26a6 /src/core
parent9f3f8da7454a33d5cae7d581c82672e999609d66 (diff)
downloadqt3d-ec291f9974ba6d25148955a0b9e55b30c589a9be.tar.gz
QGeometryFactory: don't make op== virtual
That's too clever, and it backfires with compilation errors in C++20 mode: qt3d/tests/auto/render/meshfunctors/tst_meshfunctors.cpp:129:29: error: ambiguous overload for ‘operator==’ (operand types are ‘MeshFunctorA’ and ‘MeshFunctorB’) 129 | QVERIFY(!(*functorA == *functorB)); | ~~~~~~~~~ ^~ ~~~~~~~~~ | | | | MeshFunctorA MeshFunctorB qt3d/tests/auto/render/meshfunctors/tst_meshfunctors.cpp:72:10: note: candidate: ‘virtual bool MeshFunctorB::operator==(const Qt3DCore::QGeometryFactory&) const’ (reversed) 72 | bool operator ==(const Qt3DCore::QGeometryFactory &other) const override | ^~~~~~~~ qt3d/tests/auto/render/meshfunctors/tst_meshfunctors.cpp:50:10: note: candidate: ‘virtual bool MeshFunctorA::operator==(const Qt3DCore::QGeometryFactory&) const’ 50 | bool operator ==(const Qt3DCore::QGeometryFactory &other) const override | ^~~~~~~~ Fix by providing a symmetric operator== for QGeometryFactory that delegates to a virtual equals() method. Pick-to: 6.2 5.15 Change-Id: I23d29ad1b16075629132f2b4757c5810d5615a36 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/geometry/qgeometryfactory_p.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/core/geometry/qgeometryfactory_p.h b/src/core/geometry/qgeometryfactory_p.h
index 47f3a5281..97114d658 100644
--- a/src/core/geometry/qgeometryfactory_p.h
+++ b/src/core/geometry/qgeometryfactory_p.h
@@ -66,7 +66,9 @@ class Q_3DCORESHARED_EXPORT QGeometryFactory : public QAbstractFunctor
public:
virtual ~QGeometryFactory();
virtual QGeometry *operator()() = 0;
- virtual bool operator ==(const QGeometryFactory &other) const = 0;
+ virtual bool equals(const QGeometryFactory &other) const = 0;
+ friend bool operator==(const QGeometryFactory &lhs, const QGeometryFactory &rhs)
+ { return lhs.equals(rhs); }
};
typedef QSharedPointer<QGeometryFactory> QGeometryFactoryPtr;