Fix QScopedPointerarray default constructor

Since the compiler cannod find the template argument if there is no
argument passed to the constructor, this effectively means there is
no default constructor.

Add a default constructor

Task-number: QTBUG-20256
Change-Id: I310d5e1f3f94a8fe69fd3a5c46f2f51bca60facd
Reviewed-on: http://codereview.qt.nokia.com/1165
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
bb10
Olivier Goffart 2011-07-05 14:06:01 +02:00 committed by Qt by Nokia
parent 808acc07f2
commit d789e40c58
2 changed files with 25 additions and 1 deletions

View File

@ -208,8 +208,10 @@ template <typename T, typename Cleanup = QScopedPointerArrayDeleter<T> >
class QScopedArrayPointer : public QScopedPointer<T, Cleanup>
{
public:
inline QScopedArrayPointer() : QScopedPointer<T, Cleanup>(0) {}
template <typename D>
explicit inline QScopedArrayPointer(D *p = 0, typename QtPrivate::QScopedArrayEnsureSameType<T,D>::Type = 0)
explicit inline QScopedArrayPointer(D *p, typename QtPrivate::QScopedArrayEnsureSameType<T,D>::Type = 0)
: QScopedPointer<T, Cleanup>(p)
{
}

View File

@ -72,6 +72,7 @@ private Q_SLOTS:
void isNullSignature();
void objectSize();
void comparison();
void array();
// TODO instanciate on const object
};
@ -437,5 +438,26 @@ void tst_QScopedPointer::comparison()
QCOMPARE( int(RefCounted::instanceCount), 0 );
}
void tst_QScopedPointer::array()
{
int instCount = RefCounted::instanceCount;
{
QScopedArrayPointer<RefCounted> array;
array.reset(new RefCounted[42]);
QCOMPARE(instCount + 42, int(RefCounted::instanceCount));
}
QCOMPARE(instCount, int(RefCounted::instanceCount));
{
QScopedArrayPointer<RefCounted> array(new RefCounted[42]);
QCOMPARE(instCount + 42, int(RefCounted::instanceCount));
array.reset(new RefCounted[28]);
QCOMPARE(instCount + 28, int(RefCounted::instanceCount));
array.reset(0);
QCOMPARE(instCount, int(RefCounted::instanceCount));
}
QCOMPARE(instCount, int(RefCounted::instanceCount));
}
QTEST_MAIN(tst_QScopedPointer)
#include "tst_qscopedpointer.moc"