Salut à toutes et à tous !
Je voudrais savoir si quelque chose vous choque dans le code suivant :
J'utilise une version pour modifier l'objet dans une première phase
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 class Demography{ public : N_type pop_size(coord_type const& where, time_type time) const { try{ return populations.at(time).at(where); } catch(const std::out_of_range& oor){ return 0.; } } N_type& pop_size(coord_type const& where, time_type time) { return populations[time][where]; } private : std::map<time_type, std::map<coord_type, N_type> > populations; }
et l'autre version constante pour lire les données qu'il contient dans un contexte où l'objet demo est passé par référence constante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Demography demo; demo.pop_size(x, t0+1) = round(Ntilde);
Du coup j'imagine que le compilateur sait à quelle version il a affaire (en tout cas le code marchait), et je suis un peu content quand même parce que l'écriture me semble intuitive (mais ça c'est mon avis de noob à moi ça hein
Code : Sélectionner tout - Visualiser dans une fenêtre à part for(unsigned int ind=1; ind <= demo.pop_size(x, t0)){ // do something}). Mais on m'a fait remarqué qu'utiliser le même nom pour faire en fait un get ou un set pouvait être une mauvaise idée. Je me doute bien que rien n'est tout noir ou tout blanc... mais votre avis m'intéresse.
Bien à vous tous, et joyeux printemps
PS : j'avais vu passer un lien vers un fil de discussion qui abordait ce sujet en long en large et en travers, mais c'était il y a longtemps, je n'avais pas tout compris et je ne le retrouve plus... si quelqu'un sait à quoi mes souvenirs flous sont liés...![]()
Partager