윈도 비스타에서는 어쩔 수 없이 VS2005 SP1을 사용해야 한다. 그런데 윈도 비스타에서 VS2005 SP1을 사용하여 아마 QMap/QHash가 들어간 프로그램을 컴파일하는데 오류가 생겼다. 다행히토 트롤텍은 둘러가기 패치를 제공하고 있었지만, 이마저도 듣지 않았다. 그래서 이 문제 가지고 MSDN과 각종 Qt 포럼이 아직도 들썩대고 있다.
그런데 그 둘러가기 패치의 코드와 내가 가지고 있는 Qt의 문제성 헤더의 줄 번호가 약간씩 차이가 났다. 그리고 둘러가기 패치는 그 주변 코드를 알 수가 없어서 뭐가 문젠지 알아내는 데 시간이 좀 걸렸다. 실제로 내가 적용시킨 것은 다음과 같다.
<QHash.h>
일단 390줄 부근에서 찾기 바란다.
private:
        // ### Qt 5: remove
        inline operator bool() const { return false; }
    };
    friend class const_iterator;
typedef typename QHash<Key, T>::iterator DummyHashIterator;
    // STL style
    inline iterator begin() { detach(); return iterator(d->firstNode()); }
    inline const_iterator begin() const { return const_iterator(d->firstNode()); }
그리고 한 890줄 부근에 있다. 
public:
    QMultiHash() {}
    QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {}
    inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value);
    inline typename QHash<Key, T>::iterator insert(const Key &key, const T &value);
       
        inline typename DummyHashIterator replace(const Key &key, const T &value);
        inline typename DummyHashIterator insert(const Key &key, const T &value);
    inline QMultiHash &operator+=(const QMultiHash &other)
    { unite(other); return *this; }
파란색 부분을 찾은 다음 지우고 빨간색으로 바꾸면 된다.
<QMap.h>
310줄 부근에서 찾기 바란다.
private:
        // ### Qt 5: remove
        inline operator bool() const { return false; }
    };
    friend class const_iterator;
        typedef typename QMap<Key, T>::iterator DummyMapIterator;
    // STL style
    inline iterator begin() { detach(); return iterator(e->forward[0]); }
    inline const_iterator begin() const { return const_iterator(e->forward[0]); }
그리고 한 890줄 부근에 있다.
public:
    QMultiMap() {}
    QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {}
           inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value);
     inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value);
            inline typename DummyMapIterator replace(const Key &key, const T &value);
            inline typename DummyMapIterator insert(const Key &key, const T &value);
    inline QMultiMap &operator+=(const QMultiMap &other)
    { unite(other); return *this; }
파란색 부분을 지우고 빨간색 부분으로 바꾸기 바란다. 그 결과 해결되는 척 하였다.