From a87edb9ae97ca10cb651b004817ee4ba09159f8b Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 21 Feb 2022 17:35:42 +0100 Subject: [PATCH] QStringEncoder/Decoder: make base class ctors protected Base class dtors should either be public and virtual or else non-virtual and protected. We don't need polymorphy, so make them protected. Because ~QStringConverter is now user-declared, the move special member functions are suppressed. Re-add them using = default. [ChangeLog][QtCore][Potentially Source-Incompatible Changes] [QStringEncoder/Decoder] The destructors of the base classes of QStringEncoder and QStringDecoder are now protected, to prevent slicing. Change-Id: I72cc5b98af1a6533a46080b537e1900808e1f130 Reviewed-by: Thiago Macieira Reviewed-by: Qt CI Bot --- src/corelib/text/qstringconverter_base.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/corelib/text/qstringconverter_base.h b/src/corelib/text/qstringconverter_base.h index b827f2d0a3..bb38af8537 100644 --- a/src/corelib/text/qstringconverter_base.h +++ b/src/corelib/text/qstringconverter_base.h @@ -110,6 +110,8 @@ public: private: Q_DISABLE_COPY(State) }; +protected: + ~QStringConverterBase() = default; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QStringConverterBase::Flags) @@ -166,8 +168,11 @@ protected: {} Q_CORE_EXPORT explicit QStringConverter(const char *name, Flags f) noexcept; + ~QStringConverter() = default; public: + QStringConverter(QStringConverter &&) = default; + QStringConverter &operator=(QStringConverter &&) = default; bool isValid() const noexcept { return iface != nullptr; }