私のヘッダーファイルには
template <typename T>
class Vector {
public:
typedef T* iterator;
typedef const T* const_iterator;
Vector(const_iterator start, const_iterator end);
// other stuff ...
}
そして、私が持っている.cppファイルに
template <typename T>
Vector< T >::Vector( const_iterator start, const_iterator end ) : theSize( 0 ), theCapacity( 1 )
{
array = new T[ theCapacity ];
typename Vector< T >::iterator itr = start; // this is line 29
for( iterator itr = start; itr != end; itr++ ){
push_back( *itr );
}
}
しかし、コンパイラは私に言っています
Vector.cpp:29: error: invalid conversion from ‘const int*’ to ‘int*’
パラメータをconst_iteratorとして保持しながら、この問題を回避するにはどうすればよいですか?
注:それが役立つ場合は、開始と終了の間に別のベクターの要素を使用してベクターを作成しようとしています。