Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Loki::Typelist в шаблоне класса


Автор: sopot 26.10.2009, 11:48
Использую библиотеку Loki.

Есть класс

Код

template <typename T>
class ClassA
{
public:
    typedef TL::TypeAt<T, 2> type2;
    void func()
    {
        typedef type2::Result type2_0;
    }
};


далее в коде
Код

...
    typedef TL::MakeTypelist<int, int, float>::Result TList;
    ClassA<TList> c;
...


все работает, тип type2_0 в ClassA::func имеет значение float


а если я хочу определить тип не в функции, а в классе

Код

template <typename T>
class ClassA
{
public:
    typedef TL::TypeAt<T, 2>::Result type2_0;
    void func()
    {
        
    }
};


то компилятор ругается на строку "typedef TL::TypeAt<T, 2>::Result type2_0;"

Warning    1    warning C4346: 'Loki::TL::TypeAt<T,2>::Result' : dependent name is not a type    ...
Error    2    error C2146: syntax error : missing ';' before identifier 'type2_0'    ...

Как мне тип в классе определить?

Автор: azesmcar 26.10.2009, 11:54
Цитата(sopot @  26.10.2009,  11:48 Найти цитируемый пост)
Как мне тип в классе определить?

замени
Код

typedef TL::TypeAt<T, 2>::Result type2_0;

на
Код

typedef typename TL::TypeAt<T, 2>::Result type2_0;

Автор: sopot 26.10.2009, 12:04
Конечно так. Спасибо. 

Автор: JackYF 26.10.2009, 23:44
sopot, пометь тему решённой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)