On Wednesday 24 August 2016 20:05:56 Kuba Ober wrote: > `QObject` is already pretty much a handle to the underlying data due to > pimpl. So that’s a good first step.
I challenge the notion that QObject is a handle to date. QObject is first and foremost the base class of a polymorphic class hierarchy. If you wrap that in a parallel value-like-but-not-quite class hierarchy, you end up with QDomNode. I don't like QDomNode. Do you like QDomNode? That said, the Copperspice guys argue that the implicit memory management of QObject parent-child relationships is becoming alien for C++ developers. The Qt community can of course deny every claim that comes from that direction, but sometimes the look of an outsider is valuable, too. After all, the API quality matters most for newbies, not decade-long Qt users. So IMO, it's certainly worth asking the question whether we should change something there, e.g. by using shared_ptr/weak_ptr to manage lifetimes. That would cover your use-case: std::vector<std::shared_ptr<QObject>> is all you were asking for. And wether you then use shared_ptr explicitly, or template <typename Object> using QObjectHandle = std::shared_ptr<Object>; is pretty much secondary. Thanks, Marc -- Marc Mutz <[email protected]> | Senior Software Engineer KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company Tel: +49-30-521325470 KDAB - Qt, C++ and OpenGL Experts _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
