Soy bastante nuevo en C++, así que tiendo a diseñar con muchos ismos de Java mientras estoy aprendiendo. De todos modos, en Java, si tuviera clase con un método de 'búsqueda' que devolviera un objeto T
desde un Collection< T >
que coincidiera con un parámetro específico, devolvería ese objeto y si el objeto no se encontraba en la colección, devolvería null
. Luego, en mi función de llamada simplemente verificaría if(tResult != null) { ... }
Devuelve un objeto "NULO" si no se encuentra el resultado de la búsqueda
En C++, estoy descubriendo que no puedo devolver un valor null
si el objeto no existe. Solo quiero devolver un 'indicador' de tipo T que notifica a la función de llamada que no se ha encontrado ningún objeto. No quiero lanzar una excepción porque no es realmente una circunstancia excepcional.
Esto es lo que mi código es el momento:
class Node {
Attr& getAttribute(const string& attribute_name) const {
//search collection
//if found at i
return attributes[i];
//if not found
return NULL; // what should this be?
}
private:
vector<Attr> attributes;
}
¿Cómo puedo cambiarlo por lo que puedo dar ese tipo de marcador?
Excepción y NULL no siempre son las únicas soluciones. A menudo puede elegir un valor para devolver que indica que no se encontró: por ejemplo, 'std :: find (first, last, value)' devuelve 'last' si no coincide ningún elemento. – Cascabel