[Development] The future of smart pointers in Qt API

Vitaly Fanaskov vitaly.fanaskov at qt.io
Tue Feb 4 11:14:22 CET 2020


I think, if we decide to re-implement parent-child model using smart 
pointers, we would not use unique pointers at all. Even in a methods 
like QObject::makeChild (because ownership is already defined). Shared + 
weak pointers make perfect sense here. The main reason is that many 
other objects might need to store weak references to a child of QObject, 
and I don't see how to properly utilize unique pointer in this case.

Just in case, it was only my assumptions. No decisions were made, no 
proper experiments were performed.

On 2/4/20 9:28 AM, Fawzi Mohamed wrote:
> Hi Daniel,
> I agree with most of your choices, and yes there will be cases where a change in QT is required.
> What I did not fully understand is why you did not go the whole way and used unique_ptr also  in QObject, as Vitaly suggested: your invariant is either owned by a unique_ptr or a QObject, if QObject uses unique_ptr then it reduces to unique_ptr ownership.
> Do you get too much boilerplate, or need to continuously get the raw pointer?
> Maybe you told already, and I missed it, but that could also show the issues of using unique_ptr.
> To me it seems that it makes ownership in our API clearer, and that is a win, but André’s comments I think show his concern with bloating up code and conceptual burden for little or no gain.
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> https://lists.qt-project.org/listinfo/development

-- 
Best Regards,

Fanaskov Vitaly
Senior Software Engineer

The Qt Company / Qt Quick and Widgets Team



More information about the Development mailing list