Seite 1 von 1

Constness und QReadWriteLock

Verfasst: 28. November 2006 15:46
von caetydid
Hi,

in einer Klasse möchte ich gewisse Daten abfragen. Die Abfrage verändert nicht den internen Zustand des Objekts.

Code: Alles auswählen

void Klasse::getData( QVector<Typ>& A ) const
{
    mDataLock.lockForRead();  // <-- geht nicht, weil nicht const
    // bastel QVector zusammen...
    // ...
    mDataLock.unlock();
}
Der obige Code kompiliert jedoch nicht, weil sich das Objekt eben doch ändert (das QReadWriteLock).
Irgendwie müßte es doch gehen, diesen Lockingmechanismus zu verwenden und gleichzeitig die obige Signatur?


caetydid >8^)

Lösung - eine Sache von C++

Verfasst: 28. November 2006 17:59
von caetydid
So, jetzt scheine ich eine Lösung gefunden zu haben.
Ob sie was taugt könnt ihr ja ggf. beurteilen:

Es gibt das C++ Keyword 'mutable'.
Wenn man die Variable so deklariert

Code: Alles auswählen

mutable QMutex mLock
kann sie auch in const Funktionen verwendet werden!

...ich nehme mal an damit kann man auch Mist bauen :)

viel Spaß beim Proggen,
caetydid >8^)

Verfasst: 29. November 2006 11:59
von lepsai
unglaublich, wa man hier alles lernen kann! :lol: