![]() |
Auteur : Davidbrcz Créé : le 05/02/2007 21:52:01 Modifié : le 04/11/2007 14:53:29 Noter et commenter ce tutoriel Imprimer ce tutoriel |

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | class CSingleton { protected: int value; static CSingleton *singleton; //le constructeur privé CSingleton() : value(0) { cout<<"Singleton crée"<<endl; } //le destructeur privé ~CSingleton() { cout<<"Singleton détruit"<<endl; } public: //un couple d'accesseur / mutateur int GetValue() { return value; } void SetValue(int val) { value=val; } //le "constructeur" public static CSingleton* GetInstance() { if(singleton==0) { singleton=new CSingleton; } return singleton; } //le "destructeur" public static void Kill() { if(singleton!=0) { delete singleton; singleton=0; } } }; CSingleton *CSingleton::singleton = 0; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> using namespace std; int main(void) { CSingleton *obj1,*obj2; obj1=CSingleton::GetInstance(); obj2=CSingleton::GetInstance(); obj1->SetValue(5); cout<<obj1->GetValue()<<endl; cout<<obj2->GetValue()<<endl; cout<<obj1<<endl; cout<<obj2<<endl; CSingleton::Kill(); } |

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | template<typename T> class CSingleton { public: /* Cette fonction retourne l'unique instance de l'objet */ static T* GetInstance(void) { if(singleton==0) { singleton = new T; } return singleton; } /* Cette fonction tue l'unique instance de l'objet */ static void Kill() { if(singleton!=0) { delete singleton ; singleton=0; } } //un couple d'accesseur / mutateur int GetValue() { return value; } void SetValue(int val) { value=val; } protected: int value; CSingleton() : value(0) { cout<<"Singleton crée"<<endl; } virtual ~CSingleton() { cout<<"Singleton détruit"<<endl; } static T *singleton; }; template <typename T> T* CSingleton<T>::singleton = 0; |
1 2 3 4 5 6 7 8 9 10 11 | class ClassAMettreEnSingleton : public CSingleton<ClassAMettreEnSingleton> { friend ClassAMettreEnSingleton* CSingleton<ClassAMettreEnSingleton>::GetInstance(); friend void* CSingleton<ClassAMettreEnSingleton>::Kill(); //tous les constructeurs et le destructeur de votre classe privés. ClassAMettreEnSingleton(){} ~ClassAMettreEnSingleton(){} }; |
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
Fil RSS |
XHTML 1.0 |
CSS 2.0
Édité par Simple IT SARL :
Nous contacter
| Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
452 Zéros connectés |
8 requêtes |
0.0262s (0.0132s)