[Qt-interest] QSharedPointer and QMap/QHash
Rudenko Eugene
erule.biz at gmail.com
Fri Feb 12 15:08:09 CET 2010
Thank you for reply, But It's not tiny way to implement qHash for every type of QSharedPointer<Class1>, QSharedPointer<Class2> and so on. Is it only way?
> 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
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
More information about the Qt-interest-old
mailing list