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...