diff options
-rw-r--r-- | src/corelib/kernel/qjniobject.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/corelib/kernel/qjniobject.h b/src/corelib/kernel/qjniobject.h index 3a02c0e31e..589f6489f7 100644 --- a/src/corelib/kernel/qjniobject.h +++ b/src/corelib/kernel/qjniobject.h @@ -71,12 +71,17 @@ public: #endif > explicit QJniObject(const char *className, Args &&...args) - : QJniObject(Qt::Uninitialized) + : QJniObject(LocalFrame<Args...>{}, className, std::forward<Args>(args)...) { - LocalFrame<Args...> localFrame; - *this = QJniObject(className, QtJniTypes::constructorSignature<Args...>().data(), - localFrame.convertToJni(std::forward<Args>(args))...); } +private: + template<typename ...Args> + explicit QJniObject(LocalFrame<Args...> localFrame, const char *className, Args &&...args) + : QJniObject(className, QtJniTypes::constructorSignature<Args...>().data(), + localFrame.convertToJni(std::forward<Args>(args))...) + { + } +public: explicit QJniObject(jclass clazz); explicit QJniObject(jclass clazz, const char *signature, ...); template<typename ...Args |