From 294f257a0a1d91a8fbedf5309e04a16c3b036824 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 12 Jun 2024 08:52:21 +0200 Subject: [PATCH] JObjectBase: make all SMFs protected This is safer against slicing and more explicit, ie. doesn't leave readers of the code wondering whether the JObject move SMFs are actually working or call something else, because the JObjectBase move SMFs are disabled due to the protected dtor. Change-Id: I5c94c95c2e2b807a8ea3bfbcc2b80b390b2bd837 Reviewed-by: Volker Hilsheimer (cherry picked from commit 51c5259fe9c5f5e41a22622830f1ca532f989685) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qjniobject.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qjniobject.h b/src/corelib/kernel/qjniobject.h index f9fc5cb03ab..af6c54e5aac 100644 --- a/src/corelib/kernel/qjniobject.h +++ b/src/corelib/kernel/qjniobject.h @@ -685,6 +685,10 @@ struct QT_TECH_PREVIEW_API JObjectBase protected: JObjectBase() = default; + JObjectBase(const JObjectBase &) = default; + JObjectBase(JObjectBase &&) = default; + JObjectBase &operator=(const JObjectBase &) = default; + JObjectBase &operator=(JObjectBase &&) = default; ~JObjectBase() = default; Q_IMPLICIT JObjectBase(jobject object) : m_object(object) {} @@ -707,7 +711,7 @@ public: Q_IMPLICIT JObject(const QJniObject &object) : JObjectBase(object) {} Q_IMPLICIT JObject(QJniObject &&object) noexcept : JObjectBase(std::move(object)) {} - // base class destructor is protected, so need to provide all SMFs + // base class SMFs are protected, make them public: JObject(const JObject &other) = default; JObject(JObject &&other) noexcept = default; JObject &operator=(const JObject &other) = default;