[Qt-interest] QSharedPointer and QMap/QHash
Alexandre Beraud
aberaud at infflux.com
Fri Feb 12 14:50:51 CET 2010
Hi,
Indeed, QHash can only handle keys with a class that has a qHash
function already. As you can see
(http://doc.trolltech.com/4.5/qhash.html) there are already a number of
such functions for the mose common types. You'll have to define your own
qHash function taking a QSharedPointer as argument and returning a uint.
You can for example return the result of qHash(sharedPointer.data())
since there is a qHash function for the pointer type.
I hope this can help you.
Regards,
Alex
Rudenko Eugene a écrit :
> Hello.
> I'm trying to use QMap/QHash with QSharedPointer with no success.
>
> For example, such code:
> ===============================
> class MyClass : QObject {
> Q_OBJECT
> ..........
> QMap< QSharedPointer<MyClass>, int > mm; //or QHash
> }
>
>
> ........
> QSharedPointer<MyClass> a = b.getPointer();
> mm.insert(a,0);
>
> ===============================
> I have got error:
> in case of use QHash:
> no matching function to call to 'qHash(const QSharedPointer<MyClass> & )'
> candidates: ..........
>
>
> in case of use QMap:
> no match for 'operator<' in 'key1 < key2'
> candidates are ........
>
>
> As I can see, there are no overloaded operators "<" and "qHash" for QSharedPointer, to redirect it to containing object.
> As I can understand, QSharedPointer is not suitable to use with QMap and QHash, Is I right?
> How can I use container classes with smart pointer classes ?
>
>
> With best regards, Eugene Rudenko.
>
>
>
>
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>
>
--
Alexandre BERAUD
Ingénieur Développement
Infflux - Informatique & Flux
Tel: 01 49 57 92 00 - Fax : 01 49 57 92 01
Mail: aberaud at infflux.com
Visitez notre site : www.infflux.com
More information about the Qt-interest-old
mailing list