[C++] Classes dans .h

Classes dans .h [C++] - Programmation

Marsh Posté le 16-07-2001 à 09:43:55    

Je rencontre actuellement un problème très lourd :
je fais un .h avec la déclaration d'une classe avec une variable dedans.
Lorsque j'accède à cette classe à partir du .cpp qui affecte une valeur à la variable de la classe, tout marche, je peux lire la variable.
Mais quand je veux accèder à cette même variable, une fois qu'elle a reçu une valeur, à partir d'un autre .cpp, et bien là, la variable me semble vide !
Je n'arrive pas à récupérer son contenu, et c pareil avec un 3ème .cpp.
Ca compile sans problèmes, mais ça marche pas !

Reply

Marsh Posté le 16-07-2001 à 09:43:55   

Reply

Marsh Posté le 16-07-2001 à 09:49:32    

C'est bizarre que ça compile sans warning.
Tu as surement déclaré ta variable de cette façon dans le .h
 
 int var1;
 
Dans ce cas une variable 'var1' est crée dans chaque cpp où est inclus ton .h
 
il faut mettre dans le .h
 externe int var1;
et mettre dans un et un seul des .cpp
 int var1;


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

Marsh Posté le 16-07-2001 à 10:22:29    

Non attends...c'est un membre de la classe ?? Je comprends rien a ton histoire ! :)
 
Tu peux nous donner ton code a prb exactement ? :)


---------------
Si t'es pas net, reste a la buvette
Reply

Marsh Posté le 16-07-2001 à 11:01:57    

Ben oui Seblamb, mais si je veux utiliser cette variable dans plusieurs .cpp ?
Voici les codes :
 
le.h :
class SOCK
{
public:
 SOCKET c;
};
 
1er.cpp :
#include "le.h"
 
SOCK sk;
sk.c = socket(AF_INET,SOCK_STREAM,0);
//...Ce cpp marche impec puisque c lui qui crée la socket.
 
2e.cpp (ou il peut pas lire la socket) :
SOCK sock;
send(sock.c,msg,sizeof(msg),0);

Reply

Marsh Posté le 16-07-2001 à 11:11:04    

J'avais pas bien compris mais c'est un problème du même ordre:
 tu crées 2 objets sock différents (sk et sock)  
Tu en initialises 1 mais le deuxieme n'a aucun rapport avec le 1er.  
Pour pouvoir utiliser un objet SOCK dans 2 cpp différent.
il faut que tu déclares dans un et un seul .cpp ( j'insiste lourdement)
SOCK sock;
 
et dans ton .h
extern SOCK sock;
 
extern permet au compilateur de savoir qu'un variable de type SOCK sera présente dans to programme même si elle n'est pas déclaré explicitement dans le .cpp
Le lien avec cette variable se fera au moment du link.


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

Sujets relatifs:

Leave a Replay

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