J'ai écrit une classe qui me permet de générer des fichiers de Log. Cette
classe a pour objectif de mutualiser toutes les sorties d'erreur.
Mon programme est constitué de plusieurs "briques" dont le fonctionnement
diffère, mais qui utilisent toute la même classe pour la gestion des
erreurs.
Actuellement, ma classe est instanciée de manière automatique, cad que mon
objet est simplement déclaré de la manière suivante:
ClassLog MaLog;
Cette méthode de déclaration limite la durée de vie de mon objet au bloc
dans lequel il a été déclaré.
Pour que cette durée de vie soit différente, il faut que je fasse une
instanciation dynamique:
ClassLog MaLog=new ClassLog;
Cette méthode d'instanciation me convient mieux, à la condition que je
puisse récupérer aisément une instance préalablement créée, sans avoir à
recréer de nouvelle instance.
Comment puis-je m'y prendre pour récupérer une instance éxistante ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Loïc Joly
Nicolas ROBERT wrote:
Bonjour,
J'ai écrit une classe qui me permet de générer des fichiers de Log. Cette classe a pour objectif de mutualiser toutes les sorties d'erreur. Mon programme est constitué de plusieurs "briques" dont le fonctionnement diffère, mais qui utilisent toute la même classe pour la gestion des erreurs.
Actuellement, ma classe est instanciée de manière automatique, cad que mon objet est simplement déclaré de la manière suivante: ClassLog MaLog; Cette méthode de déclaration limite la durée de vie de mon objet au bloc dans lequel il a été déclaré. Pour que cette durée de vie soit différente, il faut que je fasse une instanciation dynamique:
ClassLog MaLog=new ClassLog;
Cette méthode d'instanciation me convient mieux, à la condition que je puisse récupérer aisément une instance préalablement créée, sans avoir à recréer de nouvelle instance.
Comment puis-je m'y prendre pour récupérer une instance éxistante ?
Peut-être recherches-tu un singleton ?
Par exemple :
class ClassLog { private: ClassLog(); public: ClassLog &instance(); };
J'ai écrit une classe qui me permet de générer des fichiers de Log. Cette
classe a pour objectif de mutualiser toutes les sorties d'erreur.
Mon programme est constitué de plusieurs "briques" dont le fonctionnement
diffère, mais qui utilisent toute la même classe pour la gestion des
erreurs.
Actuellement, ma classe est instanciée de manière automatique, cad que mon
objet est simplement déclaré de la manière suivante:
ClassLog MaLog;
Cette méthode de déclaration limite la durée de vie de mon objet au bloc
dans lequel il a été déclaré.
Pour que cette durée de vie soit différente, il faut que je fasse une
instanciation dynamique:
ClassLog MaLog=new ClassLog;
Cette méthode d'instanciation me convient mieux, à la condition que je
puisse récupérer aisément une instance préalablement créée, sans avoir à
recréer de nouvelle instance.
Comment puis-je m'y prendre pour récupérer une instance éxistante ?
Peut-être recherches-tu un singleton ?
Par exemple :
class ClassLog
{
private:
ClassLog();
public:
ClassLog &instance();
};
J'ai écrit une classe qui me permet de générer des fichiers de Log. Cette classe a pour objectif de mutualiser toutes les sorties d'erreur. Mon programme est constitué de plusieurs "briques" dont le fonctionnement diffère, mais qui utilisent toute la même classe pour la gestion des erreurs.
Actuellement, ma classe est instanciée de manière automatique, cad que mon objet est simplement déclaré de la manière suivante: ClassLog MaLog; Cette méthode de déclaration limite la durée de vie de mon objet au bloc dans lequel il a été déclaré. Pour que cette durée de vie soit différente, il faut que je fasse une instanciation dynamique:
ClassLog MaLog=new ClassLog;
Cette méthode d'instanciation me convient mieux, à la condition que je puisse récupérer aisément une instance préalablement créée, sans avoir à recréer de nouvelle instance.
Comment puis-je m'y prendre pour récupérer une instance éxistante ?
Peut-être recherches-tu un singleton ?
Par exemple :
class ClassLog { private: ClassLog(); public: ClassLog &instance(); };
class ClassLog { private: ClassLog(); public: ClassLog &instance(); };
Sans « static », ça peut pas servir à grand-chose, de l'extérieur :-)
Oups... On va plaider la fatigue, d'accord ? ;)
En ajoutant le static donc :
class ClassLog { private: ClassLog(); public: static ClassLog &instance(); };
-- Loïc
Nicolas ROBERT
"Loïc Joly" a écrit dans le message de news:ccutrf$mk1$
drkm wrote:
Loïc Joly writes:
class ClassLog { private: ClassLog(); public: ClassLog &instance(); };
Sans « static », ça peut pas servir à grand-chose, de l'extérieur :-)
Oups... On va plaider la fatigue, d'accord ? ;)
En ajoutant le static donc :
class ClassLog { private: ClassLog(); public: static ClassLog &instance(); };
Tout à fait ce que je cherchais. Merci Beaucoup. Je ne connaissais pas le terme singleton. Pour ceux qui ont la même problématique que moi, et qui aimeraient en savoir plus sur le singleton, voici un exemple plutôt clair et simple: http://www.game-lab.com/?p=viewtut&idP&l=4
-- Loïc
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> a écrit dans le message de
news:ccutrf$mk1$1@news-reader4.wanadoo.fr...
drkm wrote:
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
class ClassLog
{
private:
ClassLog();
public:
ClassLog &instance();
};
Sans « static », ça peut pas servir à grand-chose, de l'extérieur :-)
Oups... On va plaider la fatigue, d'accord ? ;)
En ajoutant le static donc :
class ClassLog
{
private:
ClassLog();
public:
static ClassLog &instance();
};
Tout à fait ce que je cherchais. Merci Beaucoup.
Je ne connaissais pas le terme singleton. Pour ceux qui ont la même
problématique que moi, et qui aimeraient en savoir plus
sur le singleton, voici un exemple plutôt clair et simple:
http://www.game-lab.com/?p=viewtut&idP&l=4
"Loïc Joly" a écrit dans le message de news:ccutrf$mk1$
drkm wrote:
Loïc Joly writes:
class ClassLog { private: ClassLog(); public: ClassLog &instance(); };
Sans « static », ça peut pas servir à grand-chose, de l'extérieur :-)
Oups... On va plaider la fatigue, d'accord ? ;)
En ajoutant le static donc :
class ClassLog { private: ClassLog(); public: static ClassLog &instance(); };
Tout à fait ce que je cherchais. Merci Beaucoup. Je ne connaissais pas le terme singleton. Pour ceux qui ont la même problématique que moi, et qui aimeraient en savoir plus sur le singleton, voici un exemple plutôt clair et simple: http://www.game-lab.com/?p=viewtut&idP&l=4
-- Loïc
Arnaud Meurgues
Nicolas ROBERT wrote:
Tout à fait ce que je cherchais. Merci Beaucoup. Je ne connaissais pas le terme singleton.
Dans ce cas, je ne saurais que trop conseiller la lecture de "Design Patterns" de Gamma et al. Il présente le pattern Singleton et bien d'autres pas moins utiles (decorator, visitor,...). Et c'est, de nos jours, un vocabulaire très utile (voire indispensable) à connaître.
-- Arnaud (Supprimez les geneurs pour me répondre)
Nicolas ROBERT wrote:
Tout à fait ce que je cherchais. Merci Beaucoup.
Je ne connaissais pas le terme singleton.
Dans ce cas, je ne saurais que trop conseiller la lecture de "Design
Patterns" de Gamma et al.
Il présente le pattern Singleton et bien d'autres pas moins utiles
(decorator, visitor,...). Et c'est, de nos jours, un vocabulaire très
utile (voire indispensable) à connaître.
--
Arnaud
(Supprimez les geneurs pour me répondre)
Tout à fait ce que je cherchais. Merci Beaucoup. Je ne connaissais pas le terme singleton.
Dans ce cas, je ne saurais que trop conseiller la lecture de "Design Patterns" de Gamma et al. Il présente le pattern Singleton et bien d'autres pas moins utiles (decorator, visitor,...). Et c'est, de nos jours, un vocabulaire très utile (voire indispensable) à connaître.
-- Arnaud (Supprimez les geneurs pour me répondre)