Eu sou muito novo em C ++, então tendo a projetar com muitos Java-ismos enquanto estou aprendendo. De qualquer forma, em Java, se eu tivesse uma classe com um método de 'pesquisa' que retornasse um objeto T
de um Collection< T >
que correspondesse a um parâmetro específico, eu retornaria esse objeto e se o objeto não fosse encontrado na coleção, eu retornaria null
. Então, em minha função de chamada, eu apenas verificariaif(tResult != null) { ... }
Em C ++, estou descobrindo que não posso retornar um null
valor se o objeto não existir. Eu só quero retornar um 'indicador' do tipo T que notifica a função de chamada que nenhum objeto foi encontrado. Não quero lançar uma exceção porque não é realmente uma circunstância excepcional.
É assim que meu código se parece agora:
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;
}
Como posso alterá-lo para dar esse tipo de marcador?
std::find(first, last, value)
retornalast
se nenhum elemento corresponder.