template<class T>
class iVector
{
protected:
int _size;
T * _vector;
public:
typedef T * iterator;//My definition of iterator
iVector(int n);
iterator begin();
iterator end();
};
//constructor:
template<class T>
iVector<T>::iVector(int n) : _size(n)
{
}
template<class T>
iterator iVector<T>::begin()
{
}
template<class T>
iterator iVector<T>::end()
{
}
Я не знаю, почему VS2017 сообщает мне, что «итератор» не определен. И Дев- C++ сообщает мне, что «итератор» не называет тип. Вопрос возникает по поводу:
iterator iVector<T>::begin();
iterator iVector<T>::end();
Но я думаю, что определил это на:
typedef T * iterator;
Спасибо!





Вам необходимо дополнить имя именем класса, когда вы используете его вне определения класса. например
template<class T>
typename iVector<T>::iterator iVector<T>::begin()
^^^^^^^^^^^^^^^^^^^^^
Как альтернатива "подробный"
template<class T>
typename iVector<T>::iterator
iVector<T>::begin()
{
// ...
}
вы можете использовать
template<class T>
auto iVector<T>::bagin()
-> iterator
{
// ...
}
Спасибо! Я понял!