[Development] Is QImage movable
Marc Mutz
marc.mutz at kdab.com
Tue May 26 13:56:41 CEST 2015
On Saturday 23 May 2015 19:47:28 Thiago Macieira wrote:
> On Saturday 23 May 2015 15:35:23 Иван Комиссаров wrote:
> > Hi.
> >
> > I’ve created a QVector of QImages and tried to insert an image in the
> > vector: QVector<QImage> images;
> > images.insert(images.begin(), QImage());
> >
> > I got a compiler warning saying
> >
> > "qvector.h:649:21: warning: destination for this 'memmove' call is a
> > pointer to dynamic class 'QImage'; vtable pointer will be overwritten
> > [-Wdynamic-class-memaccess]»
> >
> > This happens because QImage inherits QPaintDevice (which is virtual) and
> > QImage is declared movable using Q_DECLARE_SHARED macro.
> >
> > Is this behavior intended?
>
> Yes.
In Qt 6, we should probably change that to static polymorphism. E.g. anything
with a
QPaintDevice * paintDevice()
method on can be painted-to. I ran into the polymorphism of what should be a
value class, too, already (when implementing swap).
Thanks,
Marc
--
Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt Experts
More information about the Development
mailing list