[Interest] What's the recommended way to put QObjects in smart pointers?

Thiago Macieira thiago.macieira at intel.com
Wed May 4 20:35:08 CEST 2016


On quarta-feira, 4 de maio de 2016 20:56:52 PDT Nikos Chantziaras wrote:
>  From what I can tell, QPointer does not delete the object, so that's a
> no go.
> 
> Putting the objects on the stack doesn't work either, because the Qt
> object model does not support that (it will call 'delete' on the object
> even if it's on the stack.)

So what are you requirements? Do you want to a container that does delete the 
object it has, unless the parent has already deleted it?

Use a custom deleter for unique_ptr that carries a QPointer so you can tell 
whether it's already been deleted.

Or if you want to risk private API, see 
QtSharedPointer::ExternalRefCountData::getAndRef(). Since it's used by inline 
code, it can't disappear before Qt 6.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Interest mailing list