Вопрос по шаблонам C ++ - PullRequest
0 голосов
/ 02 мая 2010

Я использовал простой класс для тестовой программы о шаблонах, вот что я сделал:

template <typename T>
class test
{
public:
    test<T>::test();
    T out();
};

template <typename T>
test<T>::test()
{
}

T test<T>::out()
{
}

int main()
{
    //test<int> t;
}

Но когда я пытаюсь скомпилировать, он говорит 'T': необъявленный идентификатор и использование шаблона класса требует списка аргументов шаблона , указывающего на ту же строку, где я реализовал метод out () . Может кто-нибудь объяснить, в чем проблема ?? Я использую Visual Studio 2008.

Ответы [ 3 ]

5 голосов
/ 02 мая 2010

Следующее является более точным:

template <typename T>
class test
{
public:
    test();
    T out();
};

template <typename T>
test<T>::test()
{
}

template <typename T>
T test<T>::out()
{
}

1) Не используйте <T> внутри класса 2) Не забудьте объявить шаблон <T> перед каждым объявлением метода вне тела класса

0 голосов
/ 02 мая 2010

Эта строка неверна:

test<T>::test();

Просто напишите это:

test();
0 голосов
/ 02 мая 2010

В вашем определении члена out отсутствует список аргументов шаблона. должен читать: -

template <typename T>
T test<T>::out() 
{ 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...