[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