[C++] classe statique

classe statique [C++] - Programmation

Marsh Posté le 04-06-2001 à 13:58:57    

voila, j'aimerais partager plusieurs variables et fonctions entre plusieurs fichiers, j'ai donc cree une classe statique :
 
 
static class VarGlobale  
{
private:
 
 SOCKET s;      
 
 SOCKET ConnectToServer ();
 
 int SendData (const char*, unsigned int);
 int RecvData (char*, unsigned int);
 
 
public:
 
 VarGlobale ();
 virtual ~VarGlobale ();
 
 BOOL TestConnexion ();
 
 char NomServeur  [LNOM_S+1],
  IpServeur  [LIP_S],
  BufferTabJoueur         [LBUFF_J],
  BufferJoueurLocal       [LBUFF_J/MAX_J],
  BufferTabEquipe         [LBUFF_E];
   
 struct hostent* hpClient;
 struct hostent* hpServeur;      
} Var;
 
j'inclue le fichier .h (ci dessus ) dans chacun de mes .cpp
 
le programme passe a la compilation sans erreures ni warning mais lors de l'execution je m'appercoie que les variables ne sont pas partager :(
 
est ce ma classe qui deconne ou faut'il faire d'une autre manière pour partager ses variables ??

Reply

Marsh Posté le 04-06-2001 à 13:58:57   

Reply

Marsh Posté le 04-06-2001 à 14:48:09    

Ca existe les classes statiques ?

Reply

Marsh Posté le 04-06-2001 à 15:00:13    

yep bizarre j'ai jamais vu ça ... apparemment l'inclusion de ton .h dans chaque .cpp créé à chaque fois une nouvelle instance statique.
 
si tu veux partager des membres, tu peux les déclarer statiques au sein de la classe (ie static SOCKET s;).
 
si tu veux tout partager, créé une instance globale dans un .cpp et déclare là avec extern dans ton .h pour la partager avec le reste du projet.

Reply

Marsh Posté le 04-06-2001 à 16:57:11    

Il faut faire un singleton : c'est bien plus propre et evolutif, crois moi (sous-classe) :
 
* Constructeur protégé
* methode statique qui rend/crée l'unique instance de la classe

 

[edit]--Message édité par n0mad--[/edit]


---------------
Pipiru piru piru pipiru pi
Reply

Marsh Posté le 04-06-2001 à 21:31:59    

mercie !
 
en me basant sur vos conseils voila ce que j'ai fait :
 
-> dans le fichier principale j'ai inclue un .h contenant le code que j'ai marquer ci dessus.
 
-> dans les autres fichiers j'ai inclue la definition des classes en mettant un extern devant.
 
ca marche bien, mais j'aimerais savoie si ma méthode est bonne ??

Reply

Marsh Posté le 05-06-2001 à 08:58:40    

Verdoux a écrit a écrit :

Ca existe les classes statiques ?




 
Je pense que c'est comme les fct statiques, elles ne sont visibles que depuis le fichier ou elles sont definies

Reply

Marsh Posté le 05-06-2001 à 09:14:43    

gcc me dit:
`static' can only be specified for objects and functions

Reply

Marsh Posté le 05-06-2001 à 10:00:41    

Le singleton semble une solution propre.
 
mais d'aprés mes souvenirs les données statiques de la classe doivent étres preprototypées dans les fichiers d'implémentation ce qui gonfle sérieusement le travail.
 
arf langage quand tu nous tiens!

Reply

Marsh Posté le 05-06-2001 à 16:37:34    

mercie pour vont conseil, ya tout qui marche bien  , c cool :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed