[Development] Undeprecating QPointer

Olivier Goffart olivier at woboq.com
Fri Mar 2 12:20:05 CET 2012


On Friday 02 March 2012 10:27:56 Thiago Macieira wrote:
> Hello
> 
> QPointer was ported to a QWeakPointer backend and deprecated early in Qt 5
> history. However, QPointer is used throughout our code and, I can expect, in
> user code too. Replacing it with QWeakPointer is just monkey work, adding
> .data() everywhere and buying us no better safety (because no one will
> bother to verify that the pointer could be got at that point). After the
> port to QWeakPointer, QPointer is no longer slow either.
> 
> I'd like to suggest we un-deprecate it and bring it back to full status.

I agree.
I have been trying to compile qtbase without the deprecated symbols, and two 
issues remains that i could not solve: QPointer, and QWheelEvent's deprecated 
member.

For QPointer, the task is indeed to big and I think it is best not to 
deprecate it.

The alternative would be to add operator-> and operator T* to QWeakPointer, 
which would allow do do simply s/QPointer/QWeakPointer/g
I personaly beleive this would actually be the best option.

> At the same time, I'd like to suggest we discourage using QWeakPointer for
> tracking QObjects, instead leaving it to its original purpose of being the
> weak reference counterpart to QSharedPointer.

Indeed, we should not have two class with the same purpose. So if QPointer 
stays, QWeakPointer have to leave.

> I'm not going as far as suggesting we deprecate the QWeakPointer(QObject*)
> constructor yet. I need to do a bit of research on how a future
> QSharedPointer & QWeakPointer with full "enable_shared_from_this" and
> QObject tracking would look like.

One problem: QPointer use QWeakPointer inline, meaning it can hardly be done 
without QWeakPointer in the future.





More information about the Development mailing list