Pimpl copying
André Wöbbeking
Woebbeking at onlinehome.de
Fri Jul 14 09:33:55 BST 2006
On Thursday 13 July 2006 23:05, Peter Kümmel wrote:
> While debugging KTempDirTest on windows I've found that this patch
>
> Index: ktempdirtest.cpp
> ===================================================================
> --- ktempdirtest.cpp (revision 561767)
> +++ ktempdirtest.cpp (working copy)
> @@ -26,7 +26,7 @@
>
> void KTempDirTest::testBasic()
> {
> - KTempDir dir = KTempDir("test");
normal ctor and then copy ctor
> + KTempDir dir("test");
normal ctor
> avoids a crash caused by dereferencing a uninitialized variable.
> (wonder why it works with gcc)
This test should also lead to double deletion when dir is destroyed.
> I fear kdelibs is full of this bug and think we should catch
> such constructs at compile time.
Many classes with pimpls are subclasses of QObject which can't be
copied/assigned. Some other classes use QSharedDataPointer. In both
cases you don't have that problem.
> Shouldn't we introduce a coding policy something like this:
I think people should be aware of this pitfall (could anyone add this to
http://developer.kde.org/policies/librarypolicy.html?).
> This introduces a new macro KDE_PIMPL_COPYABLE
> which declares the pimpl AND the copy functions.
>
> KDE_PIMPL_UNCOPYABLE declares the copy functions
> as private, so we get an error at compile time.
>
> Or is there already a Qt way to handle this?
Q_DISABLE_COPY
Cheers,
André
More information about the kde-core-devel
mailing list