QVector::at(int i) const devuelve una referencia constante al elemento
en la posición <i>, no un puntero. No se puede obtener directamente un
puntero al elemento utilizando este método.
El operador de índice
[] devuelve una referencia (no constante) al elemento.Hay que tener en
cuenta que este método no realiza ninguna verificación de rango. Si el
índice está fuera del rango válido del QVector, el comportamiento es
indefinido y puede causar errores en tiempo de ejecución. Es conveniente
verificar el rango antes de devolver el puntero.
MiContainer * at(int idx) { return &_db[idx];} // funciona
MiContainer * at(int idx) { return &_db.at(idx);}// no funciona
error: invalid conversion from ‘const FunctionContainer*’ to ‘FunctionContainer*’ [-fpermissive]
Versión con verificacion de rango:
MiContainer * at(int idx) {
assert(idx>=0 && idx<_db.size(); //verificación de rango durante el desarrollo
return &_db[idx];
}
No hay comentarios:
Publicar un comentario