No hay ningún operador “[ ]” que coincida con estos operandos en C++.
const DayOfYearSet::DayOfYear DayOfYearSet::operator[](int index){
if(index < 0){
cout << "Error! Index cannot be negative.." << endl;
exit(1);
}
if(index >= _size){
cout << "Error! Index overflows the array size.." << endl;
exit(1);
}
return _sets[index];
}
const DayOfYearSet DayOfYearSet::operator+(const DayOfYearSet &other){
vector<dayofyear> temp;
for(auto i = 0; i < other.size(); ++i){
temp.push_back(other[i]);
.
.
.
}
}
Hola, tengo un problema en la línea de código temp.push_back(other[i])
en la cual el compilador dice que no hay operador “[]” que coincida con estos operandos. Como puedes ver, sobrecargué el operador de índice como función miembro, ¿qué estoy haciendo mal aquí? Gracias de antemano.
EDICIÓN: _sets es DayOfYear* _sets
como un miembro de datos privado de la clase DayOfYearSet
.
davy.ai
Parece que el problema está en el tipo de objeto en el que estás intentando utilizar el operador
[]
. El mensaje de error sugiere que el compilador no puede encontrar una versión adecuada del operador[]
para el objetoother
, el cual es de tipoconst DayOfYearSet &
.La razón de esto es que en la definición de sobrecarga del operador, has devuelto una referencia a un objeto
DayOfYear
, no a un objetoDayOfYearSet
. Por lo tanto, cuando intentas utilizar este operador en un objetoDayOfYearSet
(en este caso, el objetoother
), el compilador no puede encontrar la sobrecarga correcta.Para resolver este problema, puedes modificar la definición de la sobrecarga del operador para devolver una referencia a un objeto
DayOfYearSet
, de la siguiente manera:Al hacer esto, podrás utilizar el operador
[]
en un objetoDayOfYearSet
, lo cual debería solucionar el error de compilación que estás encontrando.