Compile error with QT_STRICT_ITERATORS

Christian Ehrlicher Ch.Ehrlicher at gmx.de
Sun Oct 19 15:53:05 BST 2008


Thiago Macieira schrieb:
> Christian Ehrlicher wrote:
>> Thiago Macieira schrieb:
>>> Thiago Macieira wrote:
>>>> Christian Ehrlicher wrote:
>>>>> Hi,
>>>>>
>>>>>
>>>>> This code doesn't compile - neither with msvc nor with gcc 3.4.5
>>>>> (mingw):
>>>>>
>>>>> ----------------------------8<------------
>>>>> #define QT_STRICT_ITERATORS
>>>>> #include <QtCore/QHash>
>>>>>
>>>>> int main(int, char**)
>>>>> {
>>>>>   QMultiHash<QString,QString> myHash;
>>>>>   myHash.remove("blub", "blub");
>>>>>
>>>>>   return 0;
>>>>> }
>>>>> ----------------------------8<------------
>>>>>
>>>>> Looks like a qt-bug to me or do I miss something?
>>>> There's no QHash::remove(const Key &, const T &);
>>>>
>>>> There's only a one-argument QHash::remove.
>>> Wait, QMultiHash. I missed that.
>>>
>>> I see the function there.
>>>
>>> But it fails to compile:
>>> /tmp/multihash/main.cpp:7:   instantiated from here
>>> src/corelib/tools/qhash.h:336: error: 'bool QHash<Key,
>>> T>::iterator::operator!=(const QHash<Key, T>::const_iterator&) const
>>> [with Key = QString, T = QString]' is private
>>> src/troll/qt-4.5/src/corelib/tools/qhash.h:955: error: within this
>>> context
>>>
>>> Bug in Qt.
>> Thx, will inform qt-bugs tomorrow :)
> 
> Fix seems very simple.
> 
> No need to bother them. Patch attached.
> 
> I need to get it reviewed tomorrow and then I'll apply to the 4.4 tree.
> 
ok, I had the same fix but was unsure if it's really correct.


Thx,
Christian




More information about the kde-core-devel mailing list