• # 'mutable' ?

    Posté par (site web personnel) . En réponse au message Appeler une méthode non-const à partir de la méthode const homonyme. Évalué à 4. Dernière modification le 08 janvier 2014 à 18:22.

    Je ne suis pas un spécialiste du C++ 'standard', mais, de manière générale, une méthode 'const' ne devrait appeler que des méthodes 'const'.

    Je m'étais moi-même trouvé dans une situation ou une méthode, qui ne modifiait pas fondamentalement l'objet sur lequel elle s'appliquait, d'où sa qualification en 'const', modifiait néanmoins un de ses membres (dans mon cas, c'était un cache), ce que le compilateur ne manqua pas de me faire remarquer de manière péremptoire tout en refusant de mener à terme son travail. Pour résoudre ce problème, j'ai déclaré le cache en question en 'mutable', ce qui m'a permis de laisser la méthode en 'const', à la grande satisfaction de mon compilateur, qui ne pipa plus mot.

    Concrètement, pour le code présenté, pour ce que j'en ai compris, je déclarerais 'is_initialzed' en 'mutable', ce qui permettrait de déclarer 'initialize()' en 'const', et il n'y aurait plus besoin que d'une seule méthode 'mean' déclarée en 'const'. Ça devrait fonctionner, mais je ne sais pas si conceptuellement ça tient la route, car un 'initialize()' en 'const' me semble bizarre...

    Zelbinium: pour la génération qui crée, pas celle qui scrolle...