es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for 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 objeto other, el cual es de tipo const 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 objeto DayOfYearSet. Por lo tanto, cuando intentas utilizar este operador en un objeto DayOfYearSet (en este caso, el objeto other), 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:

    DayOfYearSet& DayOfYearSet::operator[](int index) {
        ...
    }
    

    Al hacer esto, podrás utilizar el operador [] en un objeto DayOfYearSet, lo cual debería solucionar el error de compilación que estás encontrando.

Comments are closed.