Как вынести из шаблонного класса реализацию функции?
Не могу понять синтаксис возврата итератора класса с помощью метода класса. Вот небольшой пример:
template<typename T>
class Test{
public:
class Iterator{
Iterator();
};
Iterator Find();
};
template<typename T>
Test::Iterator Test<T>::Find() {
return Test::Iterator();
}
На такую запись компилятор ругается на вынесенную реализацию метода.
'Test' is not a class, namespace, or enumeration
Как нормально вынести реализацию метода в этом случае?
Так же интересует как вынести объявление класса Iterator из класса, который его содержит. Т.е в классе написать только class Iterator; а остальное объявление написать вне класса.
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Вот так можно:
template<typename T>
class Test{
public:
class Iterator;
Iterator Find();
};
template<typename T>
class Test<T>::Iterator{
public:
Iterator();
};
template<typename T>
typename Test<T>::Iterator Test<T>::Find(){
return Iterator();
}