[Interest] Migrating QWeakPointer to Qt5
Thiago Macieira
thiago.macieira at intel.com
Fri May 6 23:54:03 CEST 2016
On sexta-feira, 6 de maio de 2016 12:14:14 PDT Nye wrote:
> On Fri, May 6, 2016 at 8:35 AM, Tom Isaacson <Tom.Isaacson at navico.com>
>
> wrote:
> > I'm moving some Qt4.8.2 code which uses QWeakPointer to Qt5.6.
> > Simplifying a lot it looks like this:
> > [snippet ..]
> > but when I compile under Visual Studio 2013 I get this error:
> > error C2664: 'QWeakPointer<MyClass>::QWeakPointer(const QSharedPointer<T>
> > &)' : cannot convert argument 1 from 'MySettings *' to 'const
> > QWeakPointer<MySettings> &'
>
> Is there a recommended method for migrating the use of QWeakPointer into
>
> > Qt5?
>
> Yes, by actually using a QSharedPointer for the constructor (as
> QWeakPointer is a weak reference to a shared pointer).
That's not the same thing. For a while, we had deprecated QPointer in favour
of QWeakPointer for tracking QObjects you did not own. But we came to our
senses before Qt 5.0 was launched and un-deprecated QPointer for that
functionality.
QWeakPointer in Qt 5 is as you said: a weak reference to a shared pointer.
> > I tried changing the QWeakPointer to a QPointer but now I'm getting:
> > error C2440: 'static_cast' : cannot convert from 'QObject *' to MyClass *'
> > (GeneratedFiles\Debug\moc_MyCode.cpp)
Looks like a missing #include.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Interest
mailing list