Определение вложенного класса шаблоннго класса внешним образ
От: Аноним  
Дата: 30.09.07 16:47
Оценка:
Данный код не комплиться под VS 2005, хотя компилится здесь — http://www.comeaucomputing.com/tryitout/


template<class T> class zzz
{
public:
    class qqq
    {
    public:
        void f1();
        qqq f2();
    };
};

int main(void)
{
   return 0;    
}
template<class T> void zzz<T>::qqq::f1()
{}
template <class T> zzz<T>::qqq zzz<T>::qqq::f2()
{
    zzz<T>::qqq x;
    return x;
}


Т.е. если вложенный класс возвращает значение своего типа, то выдается ошибка:
Error 2 error C2143: syntax error : missing ';' before 'zzz<T>::qqq::f2'
Error 3 error C4430: missing type specifier — int assumed. Note: C++ does not support default-int
Error 4 fatal error C1903: unable to recover from previous error(s); stopping compilation

Бороться можно, определив локальный класс внутренне, но как решить проблему внешне?
Re: Определение вложенного класса шаблоннго класса внешним о
От: Vain Россия google.ru
Дата: 30.09.07 18:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Т.е. если вложенный класс возвращает значение своего типа, то выдается ошибка:

А>Error 2 error C2143: syntax error : missing ';' before 'zzz<T>::qqq::f2'
А>Error 3 error C4430: missing type specifier — int assumed. Note: C++ does not support default-int
А>Error 4 fatal error C1903: unable to recover from previous error(s); stopping compilation
странно, а у меня немножко не так
1>test1.cpp
1>.\test1.cpp(481) : warning C4346: 'zzz<T>::qqq' : dependent name is not a type
1>        prefix with 'typename' to indicate a type
1>.\test1.cpp(481) : error C2143: syntax error : missing ';' before 'zzz<T>::qqq::f2'
1>.\test1.cpp(481) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\test1.cpp(481) : fatal error C1903: unable to recover from previous error(s); stopping compilation

А>Бороться можно, определив локальный класс внутренне, но как решить проблему внешне?
лучше не дизейблить нужные варнинги..
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: Определение вложенного класса шаблоннго класса внешним о
От: pasenger  
Дата: 01.10.07 03:59
Оценка:
Граблю зовут typename
template <class T> typename zzz<T>::qqq zzz<T>::qqq::f2()
{
    zzz<T>::qqq x;
    return x;
}
Re[2]: Определение вложенного класса шаблоннго класса внешни
От: Аноним  
Дата: 01.10.07 06:50
Оценка:
Здравствуйте, pasenger, Вы писали:

P>Граблю зовут typename

P>
template <class T> typename zzz<T>::qqq zzz<T>::qqq::f2()
P>{
P>    zzz<T>::qqq x;
P>    return x;
P>}


Спасибо огромное!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.