Property binding system: Fix developer build with MSVC 2019 (16.4.1)

- Fix wrong forward declaration
- De-inline constructor of QUntypedPropertyBinding(), fixing:

qtbase\include/src/corelib/tools/qshareddata.h(184): error C2027: use of undefined type 'QPropertyBindingPrivate'
qtbase\include/src/corelib/kernel/qpropertyprivate.h(60): note: see declaration of 'QPropertyBindingPrivate'
qtbase\include/src/corelib/tools/qshareddata.h(184): note: while compiling class template member function 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>::~QExplicitlySharedDataPointer(void)'
qtbase\src\corelib\kernel\qproperty.h(143): note: see reference to function template instantiation 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>::~QExplicitlySharedDataPointer(void)' being compiled
qtbase\src\corelib\kernel\qproperty.h(142): note: see reference to class template instantiation 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>' being compiled
qtbase\include\/src/corelib/tools/qshareddata.h(184): warning C4150: deletion of pointer to incomplete type 'QPropertyBindingPrivate'; no destructor called
qtbase\include\/src/corelib/kernel/qpropertyprivate.h(60): note: see declaration of 'QPropertyBindingPrivate'

Amends 9f9049b486.

Change-Id: Idd613e2487d5ab7f8ead74747acd976d5d210c28
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
bb10
Friedemann Kleint 2020-03-17 09:20:35 +01:00
parent 0dcdfc1ee4
commit 749e37efc5
2 changed files with 4 additions and 2 deletions

View File

@ -122,7 +122,7 @@ public:
// already has.
using BindingEvaluationFunction = std::function<BindingEvaluationResult(int version, void *propertyStoragePtr)>;
QUntypedPropertyBinding() = default;
QUntypedPropertyBinding();
QUntypedPropertyBinding(BindingEvaluationFunction function, const QPropertyBindingSourceLocation &location);
QUntypedPropertyBinding(QUntypedPropertyBinding &&other);
QUntypedPropertyBinding(const QUntypedPropertyBinding &other);
@ -337,7 +337,7 @@ private:
Q_DISABLE_COPY(QProperty)
friend struct QPropertyBasePointer;
friend struct QPropertyBinding<T>;
friend class QPropertyBinding<T>;
friend struct QPropertyObserver;
// Mutable because querying for the value may require evalating the binding expression, calling
// non-const functions on QPropertyBase.

View File

@ -89,6 +89,8 @@ bool QPropertyBindingPrivate::evaluateIfDirtyAndReturnTrueIfValueChanged()
return changed;
}
QUntypedPropertyBinding::QUntypedPropertyBinding() = default;
QUntypedPropertyBinding::QUntypedPropertyBinding(QUntypedPropertyBinding::BindingEvaluationFunction function,
const QPropertyBindingSourceLocation &location)
{