1
template<class T>
class Vector {
size_t size;
size_t allocated;
T *array;
public:
Vector() {...};
Vector(size_t constr_size) {...};
Vector(const Vector &source) {...};
~Vector() {
delete array;
};
/*omitted methods*/
class iterator : public std::iterator<std::input_iterator_tag, int> {
Vector<T> *vector;
size_t position;
public:
iterator(Vector<T> *vector_, size_t idx) {
vector = vector_;
position = idx;
};
iterator(iterator &it) {
vector = it.vector;
position = it.position;
};
/*more omitted methods*/
};
Vector<T>::iterator begin() {
return Vector<T>::iterator(this, 0);
};
Vector<T>::iterator end() {
return Vector<T>::iterator(this, size);
};
};
ベクターを作成してイテレータで処理しようとすると、「ベクター::イテレータ」の初期化に一致するコンストラクタがありません。それはなぜ起こるのですか?すべての必須フィールドが定義されているようですが、何とかエラーが発生します。イテレータに一致するコンストラクタがありません
私は理解しているように、一般的なコピーコンストラクタで:
簡単な修正は、コピーコンストラクタはconst参照を取るようにすることですか? – RomaValcer
@RomaValcer彼らは*必要なものではありませんが、一般的にそれらは必要です。 – TartanLlama