begin process at 2012 05 30 18:35:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Template et singleton: problème d'utilisation


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Template et singleton: problème d'utilisation

lundi 29 août 2005 à 23:05:17 | Template et singleton: problème d'utilisation

neodelphi

Membre Club

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:


class CFps: CSingleton<CFps>
{
    friend class CSingleton<CFps>;

    private:
        // Méthodes et variables
    public:
        // Méthodes et variables
};



Pour utiliser le singleton je procède actuellement de la manière suivante:

CSingleton<CFps>::getInstance()->doSomething();


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:

CFps::getInstance()->doSomething();  // Autorisé car CFps hérite de la méthode statique getInstance ?


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:

  static T* getInstance()
  {
      if(!psingleton)
          psingleton = new T;
      return psingleton;
  }



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

lundi 29 août 2005 à 23:11:05 | Re : Template et singleton: problème d'utilisation

cosmobob

Réponse acceptée !
salut,
en C++ l'héritage par défaut est privé. Pour qu'il soit public; tu dois le mettre explicitement:

class CFps: public CSingleton<CFps>
{
...
};

a+

lundi 29 août 2005 à 23:16:22 | Re : Template et singleton: problème d'utilisation

neodelphi

Membre Club
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 ?

neodelphi
lundi 29 août 2005 à 23:19:24 | Re : Template et singleton: problème d'utilisation

cosmobob

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)
a+

lundi 29 août 2005 à 23:22:29 | Re : Template et singleton: problème d'utilisation

neodelphi

Membre Club
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
lundi 29 août 2005 à 23:28:22 | Re : Template et singleton: problème d'utilisation

cosmobob

non t'inquiete pas les regles sont:
heritage public : les membres de la classe fille gardent les memes protections que ceux de la classe mère.
heritage protected: les membres de la classe mere qui sont public deviennent protected chez la classe fille, les autres restent inchangés.
heritage private: les membres héritées deviennent tous private dans la classe fille.

a+

lundi 29 août 2005 à 23:37:28 | Re : Template et singleton: problème d'utilisation

xterminhate

Membre Club
static T* getInstance() { if(!psingleton) psingleton = new T; return psingleton; } ne pourrait il pas être remplacé par .... static T * getInstance() { static T singleton; return & singleton; } ...ca simplifie un peu.
lundi 29 août 2005 à 23:43:30 | Re : Template et singleton: problème d'utilisation

cosmobob

ca simplifie sauf que tu peux pas controler quand tu veux le détruire, alors qu'avec la premiere methode, c'est possible.

a+

lundi 29 août 2005 à 23:45:18 | Re : Template et singleton: problème d'utilisation

xterminhate

Membre Club
Tu parles d'un singleton. Quand à lieu la destruction d'un singleton ? ;-)
lundi 29 août 2005 à 23:48:50 | Re : Template et singleton: problème d'utilisation

cosmobob

quand tout ce qui va avec se détruit. Singleton = au plus 1, pas tout le temps 1.
apres tout dépend de ce que tu veux faire.


1 2

Cette discussion est classée dans : problème, template, singleton, getinstance, csingleton


Répondre à ce message

Sujets en rapport avec ce message

Singleton et héritage [ par Dany82 ] Voila mon probleme:J'utilise le template:template class singleton{protected: // Constructor/Destructor singleton( ) { } // Supprime l instance de la c Problème Héritage & Template [ par Aquarian ] Bonjour,J'ai le code suivant qui compile sous Visual Studio et pas sous Dev-cpp. Est-ce qu'il faut ajouter des options pour ce dernier ou est-ce qu'il Macro et template [ par mezaya ] Bonjour à tous,j'ai un problème avec le préprocesseur c et l'utilisation de template.je n'arrive pas à résoudre le problème suivant :j'ai une macro :# Problème de cast avec template [ par xkamen ] Bonjour,Je voudrais travailler avec des templates. J'ai créé une classe template Matrix; et je voudrais savoir comment réaliser un cast dans mon progr chargement d'une DLL impossible [ par totoscill ] Bonjour, Je rencontre un problème lors de l'execution de mon application (je travaille sous XP et visual studio 2008). Mon processus fait appelle à problème d'éritage [ par panthere007 ] Salut, Bon je vais essayer d'être clair mai avec l'héritage c'est pas facile précision ce code est programmer sous geany et compiler avec g++ excuser Fonction if ().. et date! [ par oshin ] J'ai un nouveau problème! Pénible ! time_t time_of_day; char bufferT[ 150 ]; time_of_day = time( NULL ); strftime( bufferT, 150, "%d/%m/%Y",localt problème de allocation de tableau [ par boualiasma ] Bonsoir, Je voulais copier le contenu de fichier "exemple.txt" dans un tableau dynamique t de taille inconnue en avance. J'utilise le tableau pour fa Problème d'insértion de la clé dans un arbre binaire de recherche récursivement [ par polobou ] [b]BONJOUR[/b][^^happy8] Comment insérer la clé dans un arbre binaires de recherche récursivement sans utiliser par exemple un tableau [b]Merci[/b][ problème avec la fonction srand() [ par crawhawks21 ] Bonjour à vous les pros de la programmation, je me permet de venir vous trouvez car je ne trouve pas la solution à mon problème, je vous l'expose: je


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales