begin process at 2012 05 28 08:35:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

une classe static


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

une classe static

mardi 14 mars 2006 à 19:13:22 | une classe static

Adeon

bonjour a tous!
je suis sur le developpement d'un jeux.
certaine classe ne contienne qu'un seul objet comme par exemple la classe Interface, ou encore la classe Map......
donc,lorsque un code exterieur a la classe veut s'adresser a elle, le code utilise cette syntaxe : Classe::fonction();
se qui implique que "fonction()" soit de type "static", et se qui implique egalement que les variables (de l'objet de la classe ) utilisés par "fonction()" soit eu aussi de type "static". et donc me voila obligé de mettre "static" devant presque toutes les variables et fonctions de la classe, ce qui n'est pas très propre.

Ma question est la suivante :
Comment faire pour programmer une fonction dont on sait que pendant tout le déroulement du programme, elle ne contiendra q'un seul et unique objet et donc que toutes ses variables et fonction sont de type static?

Adeon
mardi 14 mars 2006 à 20:15:03 | Re : une classe static

luhtor

Réponse acceptée !
Ca ne s'appelle pas une classe static, ca s'appelle un Singleton. Une classe dont un seul objet sera créer.

Voici un modèle utilisable:
template <typename T>
class Singleton
{
protected:
    Singleton() { }
    ~Singleton() { }

public:
    static T * Instance()
    {
      if (Singleton::object == NULL) Singleton::object = new T();
     
      return Singleton::object;
    }
   
    static void Release()
    {
      if (Singleton::object != NULL) delete object;
    }

private:
    static T * object;
};

template <class T> T * Singleton<T>::object = NULL;

Donc tu mets ca dans ton fichier, puis lorsque tu créés ta classe:

class ma_class : public Singleton<ma_class>
{
...
};

Dans un programme principale, moi je déclare un pointeur global ma_class:

ma_class * instance = NULL;

... main ...
{
    instance = ma_class::Instance();

// et la ton objet est valide et initialisé.
}

Ici, un seul objet peut etre créé. Si tu fais deux appelles a ma_class::Instance(), ca retourne le meme objet. Donc impossible d'en créer un deuxième.
mardi 14 mars 2006 à 21:04:05 | Re : une classe static

Adeon

ok merci bcp, c'est tout a fait ce que je cherchais
++

Adeon


Cette discussion est classée dans : fonction, type, objet, static, classe


Répondre à ce message

Sujets en rapport avec ce message

Classe liste chaînée générique [ par marik7335 ] Salut à tous,   Je souhaite gérer un parc de véhicules contenant des motos et des voitures. Pour se faire, j'ai donc implémenter trois classes : une illegal call of non-static member function [ par Zootella ] Hello all, J'ai une classe qui comprend une fonction static, jusque là pas de problémes, mais quand j'esseye d'appeler une fonction de la même classe Classes et fonctions statiques... [ par SW_87 ] Bonjour , J'ai un petit renseignement à vous demander : J'ai créé une application "MFC AppWizzard (exe)" sous VC++ 6.0. Mais pour des raisons que déterminer dynamiquement le type d'un objet pointé [ par feanor11 ] Sachant qu'un pointeur est capable de pointer sur un objet d'un type dérivé à son type respectif (si A est dérivée de B, A* peut pointer sur un objet contenu d'un objet [ par erazor ] salut, j'ai besoin de recuperer toutes les donnes contenues dans un objet pour les utiliser avec une fonction appartenant a un autre objet, avez une i Variable et méthodes statiques, comment faire ? [ par neodelphi ] Bonjour tout le monde !Je suis actuellement de me lancer dans la réalisation d'un jeu utilisant directX. Pour avoir une base de temps en fonction de l variable private et static dans une classe [ par simtiers ] Salut ! Voilà, j'aimerais savoir comment fait-on pour utiliser une variable statique dans une classe, et que cette variable soit dans le bloc private Problème utilisation fonction [ par sidhannowe ] Bonjour, J'utilise la classe screenshot présentée ici: http://www.cppfrance.com/code.aspx?id=21255 mais lorsque je compile Dev c++ m'indique des erre test du pointeur [ par jeltimed ] bonjour .en fait je suis débutant en c++ et je voulais juste savoir est ce que ya moyen d'appliquer la logique suivant en c++: si pointeur pointe pointeur static sur fonction :) [ par luhtor ] Certain reconnaitront surement le tutoriel en question. J'ai rajouté quelques trucs au gestionnaire d'exception, mais je bloque sur le point suivant:J


Nos sponsors


Sondage...

Comparez les prix

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 : 1,482 sec (3)

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