在我的头文件中,我有
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 的同时解决此问题?
注意:如果它有帮助,我会尝试在开始和结束之间使用来自另一个 Vector 的元素构建一个 Vector。