tengo un problema que cuando uso algo como esto:Cómo devolver "no encontrado" cuando el valor de retorno es referencia constante
const MyList& my_list = getListForThisRegion(/*region ID, ...*/);
No sé lo que para volver cuando no se encuentra ningún valor.
Mi problema es que me gustaría tener una forma de señal (al devolver el valor de getListForThisRegion
) "valor no encontrado" a la persona que llama. Si devolviera un puntero, podría devolver nullptr
, pero no sé cómo hacerlo con las referencias. Todo lo que puedo pensar es tener algún miembro estático not_found
de tipo MyList
, y devolverle una referencia, pero parece feo.
Y sí, no puedo devolver el valor porque las listas son "gordas" y de uso frecuente.
EDIT: toneladas de respuestas excelentes, pero la excepción no es una solución aceptable porque el número de veces que se aumentará es alto (el porcentaje nbNotFound/nbCalls
es alto).
EDIT2: con respecto al impulso :: opcional: ¿qué tan complicado es dominar? Quiero decir, ¿requiere algún conocimiento no obvio (no obvio = algo que no es simplemente conocer la sintaxis)?
lanzar una excepción puede ser una buena opción. – BigMike
es posible que también desee ver 'boost :: optional' – Akanksh
Una referencia tiene que hacer referencia a un objeto, por lo que puede lanzar una excepción o no utilizar una referencia. 'boost :: optional' es una gran opción, pero puede ser exagerado; solo usa un puntero. – GManNickG