classe statique [C++] - Programmation
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.
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]
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 ??
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
Marsh Posté le 05-06-2001 à 09:14:43
gcc me dit:
`static' can only be specified for objects and functions
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!
Marsh Posté le 05-06-2001 à 16:37:34
mercie pour vont conseil, ya tout qui marche bien , c cool
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 ??