c++.NET 2003 & atl
От: alxm  
Дата: 26.09.03 11:27
Оценка:
Здравтсвуйте. Пытаюсь откомпилировать свой проект (использует WTL) на с++.NET 2003 standart
он ругается на atlsimpstr.h. Я выдернул кусок, который ему не нравится, это шаблонный класс
(см. комментарий в классе CSimpleStringT)
говорит

..\atlmfc\include\atlsimpstr.h(195) : warning C4346: 'ATL::ChTraitsBase<BaseType>::XCHAR' : dependent name is not a type
prefix with 'typename' to indicate a type
..\atlmfc\include\atlsimpstr.h(750) : see reference to class template instantiation 'ATL::CSimpleStringT<BaseType>' being compiled
..\atlmfc\include\atlsimpstr.h(195) : error C2146: syntax error : missing ';' before identifier 'XCHAR'
..\atlmfc\include\atlsimpstr.h(195) : error C2501: 'ATL::CSimpleStringT<BaseType>::XCHAR' : missing storage-class or type specifiers
..\atlmfc\include\atlsimpstr.h(196) : warning C4346: 'ATL::ChTraitsBase<BaseType>::PXSTR' : dependent name is not a type






#include <atlbase.h>

template< typename BaseType = char >
class ChTraitsBase
{
public:
    typedef char XCHAR;
    typedef LPSTR PXSTR;
    typedef LPCSTR PCXSTR;
    typedef wchar_t YCHAR;
    typedef LPWSTR PYSTR;
    typedef LPCWSTR PCYSTR;
};

template<>

class ChTraitsBase< wchar_t >
{
public:
    typedef wchar_t XCHAR;
    typedef LPWSTR PXSTR;
    typedef LPCWSTR PCXSTR;
    typedef char YCHAR;
    typedef LPSTR PYSTR;
    typedef LPCSTR PCYSTR;
};

template< typename BaseType >
class CSimpleStringT
{
public:
    typedef ChTraitsBase< BaseType >::XCHAR XCHAR;  // Если вместо BaseType поставить wchar_t, компилятор доволен
    typedef ChTraitsBase< BaseType >::PXSTR PXSTR;  // иначе ругается
    typedef ChTraitsBase< BaseType >::PCXSTR PCXSTR;
    typedef ChTraitsBase< BaseType >::YCHAR YCHAR;
    typedef ChTraitsBase< BaseType >::PYSTR PYSTR;
    typedef ChTraitsBase< BaseType >::PCYSTR PCYSTR;

};



если взять компилятор от Visual Studio.NET, то все ок. Да, еще, все библиотеки взяты из Visual Studio.NET

Это ограничение standart редакции компилятора? или надо atl другую?


26.09.03 15:41: Перенесено модератором из 'Средства разработки' — ПК
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.