#include <iostream> using namespace std; class Gray { private: double level; void setLevel(double level) { this->level = level; } public: Gray(double level) { setLevel(level); } double getLevel() { return level; } static Gray White; static Gray Black; friend ostream &operator<<(ostream &o,Gray &g) { return o << g.getLevel(); } }; Gray Gray::White(1.0); Gray Gray::Black(0.0); int main() { cout << Gray::White << endl; cout << Gray::Black << endl; } /* 1 : lire le code ci-dessus... 2 : aucune méthode n'est disponible publiquement permettant de modifier la valeur des attributs des instances (i.e. on ne peut changer la valeur d'une couleur). 3 : piste, fabriquer une structure dynamique statique permettant de retrouver toutes les instances créées et de retrouver une instance étant donné la valeur du niveau de gris. Cacher le constructeur et passer par une méthode statique de fabrique qui vérifie si l'instance existe (si oui la renvoie, si non instancie la classe, range l'instance dans la collection statique et la renvoie). */