22Fermer24
geogeoLe 20/05/2008 à 18:23
class Toto {
  private:
    mutable int x_;
    int y_;
  
  public:
    Toto(int x, int y) : x_(x), y_(y) {}
    int x() const {return x_;}
    int y() const {return y_;}
    void setX(int x) const {x_ = x;} // Fonctionne grâce à x_ toujours modifiable (mutable)
    void setX(int x) {x_ = x;}
    void setY(int y) {y_ = y;}
};

int main() {
  const Toto t(41, 42);
  t.setX(36); //OK (alors que t est constant)
  t.setY(20); //KO

  // Avoir une référence non constante sur t
  Toto& tRef = const_cast<Toto&>(t);
  tRef.setX(54); //OK
  tRef.setY(1564); //OK
  ...
}


Comme quoi l'utilisation de const est vicieuse et qu'il faut l'utiliser correctement histoire d'éviter d'avoir des const_cast partout...