neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008
-
29 août 2005 à 23:05
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009
-
30 août 2005 à 19:13
Bonjour !
Je viend de découvrir le modèle des singleton car j'en avait besoin pour mon projet. J'ai donc écrit un template classique de singleton, puis une classe censé etre un singleton:
<HR>
class CFps: CSingleton<CFps>
{
friend class CSingleton<CFps>;
private:
// Méthodes et variables
public:
// Méthodes et variables
};
<HR>
Pour utiliser le singleton je procède actuellement de la manière suivante:
Sa compile et ça fonctionne bien, mais le problème c'est que cette synthaxe n'est pas pratique du tout, et selon la logique du langage je devrait pouvoir écrire:
<HR>
CFps::getInstance()->doSomething(); // Autorisé car CFps hérite de la méthode statique getInstance ?
<HR>
Le problème évidement est que ça ne compile pas !
error C2248: 'getInstance' : cannot access public member declared in class 'CSingleton<class CFps>'
e:\documents\projets\projectzero\csingleton.hpp(52) : see declaration of 'getInstance'
Voici donc la déclaration de getInstance, inclue dans le fichier csingleton.hpp qui contient le code écrit dans la déclaration:
L'erreur du compilateur me surprend pas mal je doit dire, car jusqu'à preuve du contraire une méthode public doit être accessible !
Merci pour votre aide
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 29 août 2005 à 23:16
Yeaha ! Un grand merci, ça marche nikel maintenant !
Petite question cepandant, le fait de mettre l'héritage en public empeche-t-il toujours l'acces au membres privés de la classe dont j'hérite ?
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 29 août 2005 à 23:19
oui ca empeche ca.
si tu veux acceder a ce genre de membre dans des classes filles, tu
dois les mettre en protected (non accessible depuis une autre classe,
mais accessible depuis des classes filles qui en dérivent de maniere
public ou protected)
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 29 août 2005 à 23:22
Ok merci pour toutes ces précisions. On en aprend tout les jours sur ce language !
Pour le protected je connaissais, mais j'avai peur que le fait de mettre un héritage en public enlève les protection de l'encapsulation. Je vais pouvoir continuer a coder en toute serainité
encore merci, a+
neodelphi
Vous n’avez pas trouvé la réponse que vous recherchez ?
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 29 août 2005 à 23:51
Tu n'as pas besoin de contrôler la destruction d'un singleton par principe, ni la construction d'ailleurs.
D'autre part, quand on fait une allocation dynamique dans un singleton, on s'arrange pour la rendre thread-safe.... dans l'état la classe singleton proposée ci dessus est inexploitable.