C ++ typedef и шаблоны - PullRequest
       31

C ++ typedef и шаблоны

2 голосов
/ 19 декабря 2011

Предположим, есть крошечный класс

template<class T1>
class c {
    template<class T>
    class Test {
    public:
        typedef std::vector<T> vetor_type;

        vetor_type some_var;
    };

    void f() {
        Test<int>::vetor_type tt; //error
    }
};

Я получаю сообщение об ошибке:

Ожидается ';' после выражения.

Редактировать: я не знаю, почему был удален ответ о typename, потому что это действительно помогло. Но кто-то может объяснить, почему я должен использовать typename, если я пишу этот код в другом шаблоне класса?

Ответы [ 2 ]

5 голосов
/ 19 декабря 2011

Test<T> зависит от типа, используемого для создания экземпляра c<T1>, поэтому вам нужно использовать typename в определении в foo().

void f() {
    typename Test<int>::vetor_type tt;
}
0 голосов
/ 19 декабря 2011

.. так как этот код выглядит хорошо для меня.

Возможно опечатка : возможно vetor_type в одном месте и vector_type где-то еще?

...