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);
};
};
Bir Vector oluşturmaya ve yineleyicilerle çalışmaya çalıştığımda bir hata alıyorum 'Vector :: iterator' başlatılması için eşleşen bir kurucu yok. Neden oluyor? Gerekli tüm alanlar tanımlanmış gibi görünüyor, ancak bir şekilde bir hata alıyorum. Burada değeriyle dönmek yanaYineleyici için eşleşen kurucu yok
Anlıyorum gibi, genel kopyalama kurucularınızdaki:
basit bir düzeltme kopya yapıcı bir sabit başvuru almak yapmaktır? – RomaValcer
@RomaValcer Onlar * gerekmez *, ancak genellikle gerekir. – TartanLlama