Здравствуйте, у меня есть класс, подобный следующему:
template<class T, size_t C = 16>
class Vector
{
private:
// STAT. AND DYN. ATTRIBUTES
T staticVec[C];
T* dynamicVec = nullptr;
}
, и я сделал собственный конструктор, вложенный в этот класс. Я пытался использовать его, но он не работает, и я продолжаю получать эту ошибку:
error: no matching conversion for functional-style cast from 'const int *' to 'VLVector<int, 16>::ConstIterator'
return ConstIterator(&staticVec[0]);
при этом:
Vector<int> intVector;
for (int i = 1; i < 50; i++)
{
intVector.push_back(i);
}
auto it = intVector.cbegin();
Вот мой класс constIterator (внутри класса VLVector )
class ConstIterator
{
private:
const T* _it;
public:
typedef T value_type;
typedef const T& reference;
typedef const T* pointer;
typedef int difference_type;
typedef std::random_access_iterator_tag iterator_category;
ConstIterator(T* iter = nullptr) : _it(iter){}
T operator*() const {return *_it;}
ConstIterator& operator++(){ _it++; return _it;}
ConstIterator& operator++(int eugene) {ConstIterator temp = *this; _it++; return temp;}
ConstIterator& operator--(){ _it--; return _it;}
ConstIterator& operator--(int eugene) {ConstIterator temp = *this; _it--; return temp;}
friend ConstIterator& operator+(const ConstIterator& lhs, const ConstIterator& rhs) {return lhs._it + rhs
._it;}
ConstIterator& operator+=(const ConstIterator& rhs) {_it += rhs._it; return *this;}
ConstIterator& operator-=(const ConstIterator& rhs) {_it -= rhs._it; return *this;}
bool operator==(const ConstIterator& rhs) {return _it == rhs._it;}
bool operator!=(const ConstIterator& rhs) {return _it != rhs._it;}
bool operator>=(const ConstIterator& rhs) {return _it >= rhs._it;}
bool operator<=(const ConstIterator& rhs) {return _it == rhs._it;}
bool operator<(const ConstIterator& rhs) {return _it < rhs._it;}
bool operator>(const ConstIterator& rhs) {return _it > rhs._it;}
};
А вот мое определение константной версии cbegin:
const_iterator cbegin() const
{
if (checker == DYNAMIC)
{
return ConstIterator(&dynamicVec[0]);
}
else
{
return ConstIterator(&staticVec[0]);
}
}
Если у кого-то есть идея, это будет очень полезно, спасибо! Не стесняйтесь спрашивать более подробную информацию!
РЕДАКТИРОВАТЬ: Я только что увидел, что у меня нет ошибки при стирании константы, но это действительно странно, и я хотел бы, чтобы это было, если возможно