Я сейчас пытаюсь перегрузить оператор []
для векторов.Я пытаюсь заставить этот оператор работать как в Matlab или Python для отрицательных индексов или индексов, превышающих длину вектора.Моя проблема не в том, чтобы получить правильный результат, а в том, чтобы фактически перегрузить оператор, зная, что я буду использовать не перегруженный оператор в коде перегрузки.Мне это нужно для векторов определенного класса, но было бы еще лучше, если бы он работал для любого vector
.
. Прямо сейчас мой код: header:
MyClass std::vector::operator[](std::vector<MyClass> const vector,int const idx) const;
source:
Myclass vector::operator[](vector<MyClass> const vector,int const idx) const {
n=vector.size()
if((idx>=0) && (idx<n)){
return vector[idx];
}
else if(idx<0){
return vector[n+idx%n]
}
else{
return vector[idx%n]
}
}
И я получаю ошибки:
error: 'template<class _Tp, class _Alloc> class std::vector' used without template parameters
error: non-member function 'MyClass operator[](std::vector<MyClass>, int)' cannot have cv-qualifier
error: 'MyClass operator[](std::vector<MyClass>, int)' must be a nonstatic member function
Извините, если эта проблема уже обсуждалась, но я не смог ее найти ... Большое спасибо взаранее за ваши ответы!