Hello,
Disons que j'ai une classe dotée d'un énorme vecteur d'instances d'une structure (consécutive à la lecture d'un fichier).
Je veux donner un accès en lecture seule aux éléments de ce vecteur en fonction d'un indice.
L'encapsulation me prescrit d'utiliser pour cela une fonction.
Dans le code sur lequel je bosse, cela est fait avec une fonction prenant une argument une référence, et qui a comme valeur un booléen qui renvoie false si l'indice était en dehors des bornes du tableau.
Le false est renvoyé si en interne, on a levé l'exception std::out_of_bound (en testant l'indice par rapport à la taille du vecteur).
Inconvénient :
L'argument en référence impose de construire au préalable un objet, dont les membres sont settés avec la valeurs de l'élément recherché s'il est trouvé
Avantage :
Du point de vue du client de la fonction, la valeur de retour est plus facile à gérer qu'une exception
L'autre solution serait simplement d'avoir une fonction qui renverrait la référence vers l'élément recherché.
Inconvénient :
Le client doit gérer les exceptions.
Avantage :
Pas de construction superflue d'objets.
Une troisième solution serait de renvoyer un pointeur (intelligent) qui pourrait être nul.
Quelle solution a votre préférence ?
Partager