16Fermer18
Kevin KoflerLe 22/05/2013 à 10:25
Brunni (./16) :
Je me rappelle que c'était très bien fichu à ce niveau-là quand je m'étais amusé avec Qt à l'époque, mais mes souvenirs sont vagues. C'était pour les trucs de données seulement non ? (avec le copy-on-write tout ça)

Effectivement. Les QObjects utilisent un autre modèle (hiérarchie en arbre, libérer le parent libère automatiquement les fils).
Tu as un exemple d'objet simple créé soi-même avec la possibilité d'en passer des références à gauche et à droite ? smile

http://www.tigen.org/kevin.kofler/fmathl/dyngenpar/doc/dyngenpar_8h_source.html#l00678
QSharedDataPointer et QSharedData font presque tout pour toi.

Seul truc "magique" ici:
http://www.tigen.org/kevin.kofler/fmathl/dyngenpar/doc/dyngenpar_8h_source.html#l01288
(pour cloner correctement un AbstractLexerStateData à travers une méthode virtuelle qui se charge de cloner l'objet dérivé, pas seulement la partie abstraite). Ce n'est pas nécessaire dans les cas simples où ta classe de données est une classe concrète (enfin plus précisément, où c'est une classe "finale", c'est-à-dire que tu n'en dérives pas, contrainte que le langage C++ te laisse le soin de respecter toi-même).