Seite 1 von 1

qshareddatapointer

Verfasst: 25. März 2008 13:47
von ptr
hallo,

ich habe folgenden anwendungsfall: mehrere klienten möchten über einen pointer auf ein zentrales objekt zugreifen, das aber automatisch gelöscht werden soll, wenn es keiner mehr benötigt. ganz klar ein fall für qshareddata und qshareddatapointer.

jetzt habe ich aber folgendes problem:
When we use the d pointer from a non-const function, detach() is automatically called to ensure that we work on our own copy of the data.
wenn ein klient das zentrale objekt verändern möchte, wird intern eine kopie davon angelegt. ab diesem zeitpunkt arbeiten die klienten an unterschiedlichen objekten.

ich habe schon viel mit smart pointern gearbeitet, dieses verhalten ist mir jedoch neu. wende ich qshareddatapointer einfach nur falsch an, gibt's dafür eine andere lösung, oder ist das schlichtweg nicht umsetzbar in qt (will ich wohl nicht hoffen!)?

vielen dank für eure hilfe!

Verfasst: 25. März 2008 13:56
von Christian81
Es ist ja kein smartPointer sondern ein sharedPointer. Ggf. ist QPointer<> hier die bessere Wahl... Müsstest dann allerdings das refcounting selbst bauen. Sollte aber nicht so das Problem darstellen.

Verfasst: 4. Dezember 2008 00:00
von Chris81T
Auch wenn der Post schon was älter ist, ist das richtige der QExplicitlySharedDataPointer in diesem Fall. Dieser wurde mit Qt 4.4 eingeführt. Ich bin mir nicht mehr ganz sicher, aber glaube, das Qt 4.4 einen Tick später als dieser Post rauskam.

Also nur so ne Info für Leute, die erst jetzt hier drauf stoßen.