Soy bastante nuevo en C ++, así que tiendo a diseñar con muchos Java-isms mientras aprendo. De todos modos, en Java, si tuviera una clase con un método de 'búsqueda' que devolviera un objeto T
de un Collection< T >
parámetro que coincidiera con un parámetro específico, devolvería ese objeto y si el objeto no se encontrara en la colección, volvería null
. Luego, en mi función de llamada, solo verificaríaif(tResult != null) { ... }
En C ++, descubro que no puedo devolver un null
valor 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.
Así es como se ve mi código en este 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 para poder dar ese tipo de marcador?
std::find(first, last, value)
devuelvelast
si ningún elemento coincide.