Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: ufna от Октябрь 24, 2007, 07:25



Название: Проблема с QMap при компиляции на Vista
Отправлено: ufna от Октябрь 24, 2007, 07:25
Здравсвуйте!

Пользуюсь связкой MSVS 05 + Qt 4.2.0. Ранее, писал проекты на Windows XP, все работало отлично. Сейчас пришлось перейти на Vista, после чего при компиляции всех проектов вылазит следующее:

Код:
1>d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qmap.h(906) : error C2244: 'QMultiMap<Key,T>::replace' : unable to match function definition to an existing declaration
1>        d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qmap.h(891) : see declaration of 'QMultiMap<Key,T>::replace'
1>        definition
1>        'QMap<aKey,aT>::iterator QMultiMap<Key,T>::replace(const Key &,const T &)'
1>        existing declarations
1>        'QMap<aKey,aT>::iterator QMultiMap<Key,T>::replace(const Key &,const T &)'
1>d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qmap.h(910) : error C2244: 'QMultiMap<Key,T>::insert' : unable to match function definition to an existing declaration
1>        d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qmap.h(892) : see declaration of 'QMultiMap<Key,T>::insert'
1>        definition
1>        'QMap<aKey,aT>::iterator QMultiMap<Key,T>::insert(const Key &,const T &)'
1>        existing declarations
1>        'QMap<aKey,aT>::iterator QMultiMap<Key,T>::insert(const Key &,const T &)'
1>mainWidget.cpp
1>d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qhash.h(864) : error C2244: 'QMultiHash<Key,T>::replace' : unable to match function definition to an existing declaration
1>        d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qhash.h(849) : see declaration of 'QMultiHash<Key,T>::replace'
1>        definition
1>        'QHash<Key,T>::iterator QMultiHash<Key,T>::replace(const Key &,const T &)'
1>        existing declarations
1>        'QHash<Key,T>::iterator QMultiHash<Key,T>::replace(const Key &,const T &)'
1>d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qhash.h(868) : error C2244: 'QMultiHash<Key,T>::insert' : unable to match function definition to an existing declaration
1>        d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qhash.h(850) : see declaration of 'QMultiHash<Key,T>::insert'
1>        definition
1>        'QHash<Key,T>::iterator QMultiHash<Key,T>::insert(const Key &,const T &)'
1>        existing declarations
1>        'QHash<Key,T>::iterator QMultiHash<Key,T>::insert(const Key &,const T &)'
1>d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qmap.h(906) : error C2244: 'QMultiMap<Key,T>::replace' : unable to match function definition to an existing declaration
1>        d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qmap.h(891) : see declaration of 'QMultiMap<Key,T>::replace'
1>        definition
1>        'QMap<aKey,aT>::iterator QMultiMap<Key,T>::replace(const Key &,const T &)'
1>        existing declarations
1>        'QMap<aKey,aT>::iterator QMultiMap<Key,T>::replace(const Key &,const T &)'
1>d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qmap.h(910) : error C2244: 'QMultiMap<Key,T>::insert' : unable to match function definition to an existing declaration
1>        d:\qt\4.2.0\include\qtcore\../../src/corelib/tools/qmap.h(892) : see declaration of 'QMultiMap<Key,T>::insert'
1>        definition
1>        'QMap<aKey,aT>::iterator QMultiMap<Key,T>::insert(const Key &,const T &)'
1>        existing declarations
1>        'QMap<aKey,aT>::iterator QMultiMap<Key,T>::insert(const Key &,const T &)'

В общем, знает ли кто как решить данную проблему?


Название: Re: Проблема с QMap при компиляции на Vista
Отправлено: Mike от Октябрь 24, 2007, 07:55
Попробуй хотфикс для Visual Studio 2005 http://support.microsoft.com/kb/930198, должно заработать


Название: Re: Проблема с QMap при компиляции на Vista
Отправлено: Sergey B. от Октябрь 24, 2007, 11:28
Попробуй хотфикс для Visual Studio 2005 http://support.microsoft.com/kb/930198, должно заработать

Там есть пример кода для проверки этого.
Создай простой файлик, скажем template.cpp:

Код:
template <class T>
class A
{
public:
    typedef int N_A;
};

template <class T>
class B : public A<T>
{
public:
    typename A<T>::N_A test();
};

template <class T>
typename A<T>::N_A B<T>::test()   
{
    return 0;
}

и попробуйте скомпильнуть.


Название: Re: Проблема с QMap при компиляции на Vista
Отправлено: ufna от Октябрь 24, 2007, 14:59
Спасибо!
Хотфикс поставил (только как то косо, сетап пришлось прервать), но он работает, и теперь все компилится.
Еще раз спасибо! :)