Utilisation variable dans 2 fichiers CPP

mahojul Messages postés 27 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 6 mars 2009 - 5 mars 2009 à 14:15
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 6 mars 2009 à 22:04
Bonjour à tous,

Je travaille avec Windows Xp Pro SP3 et Visual C++ 6.0.

J'ai du reprendre un projet "VC++" d'un ancien collègue contenant plusieurs fichiers CPP et plusieurs fichiers H.

Dans un de mes fichiers CPP (que l'on va nommer fichier1.cpp) je récupère une valeur. Cette valeur j'aurais besoin de l'utiliser dans un autre fichier CPP (que l'on va nommer fichier2.cpp). Est-ce que c'est possible ?

Si oui, est-ce que vous pouvez m'indiquer une idée de solution ? ... ...

Merci d'avance de votre aide ...

A tout bientôt ...

Salutations à vous tous ...

6 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
5 mars 2009 à 14:22
Salut,
Il n'est pas intéressant de raisonner en terme de fichiers mais plutôt en terme de classes.
Du coup, je reformule la question: "est-ce ma classe2 peut accéder à la variable qui est dans la classe1?" Toi seul peut répondre à la question, mais pour la possibilité, je dirais : "oui, suivant ton besoin"

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
mahojul Messages postés 27 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 6 mars 2009
5 mars 2009 à 14:34
Bonjour,

Merci pour la réponse ...

Voici le problème présenté sous une autre forme :

CLASSE 1 : (dans le fichier TTest.cpp)

void TTest::OnBtnStopTimer()
{
    double d_valCompteur = 90;
}

CLASSE 2 : (dans le ficher Display.cpp)
void CDisplay::DisplayAxe(CDC &memDC)
{
    szTmp = DblToStr(dNum);
}

FONCTION DdlToStr : (dans le fichier Display.cpp)
CString CDisplay::DblToStr(double num)
{
    CString szTmp;

// J'AIMERAIS RECUPERER LE CONTENU DE  LA VARIABLE "
d_valCompteur" ICI POUR L'UTILISER COMME SUIT :




//
szTmp.Format(
d_valCompteur
, num);
A LA PLACE DE LA LIGNE CI-DESSOUS

    szTmp.Format("%.6f", num);
    return (szTmp);
}

Est-ce que vous voyez la chose ? ...

Je ne comprends pas comment je peux faire pour récupérer le contenu de cette variable d'une classe à l'autre ...

Merci beaucoup pour votre aide ...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
5 mars 2009 à 14:38
C'est simple:
- il ne faut pas que d_valCompteur soit local à une fonction mais membre de la class TTest. Soit tu la mets en public, soit en private en rajoutant une fonction d'accès à la variable, genre TTest::getCompteur()
- dans CDisplay::DblToStr(), il faut avoir accès à un objet de la classe TTest

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
mahojul Messages postés 27 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 6 mars 2009
6 mars 2009 à 08:40
Bonjour, voici ce que j'ai fait :

CLASSE 1 : (dans le fichier TTest.cpp)





Code :




void TTest::OnBtnStopTimer()
{
VariableGlobale::i_nbrCaracResol = 1;
}






CLASSE 2 DECLARATION GLOBALE : (dans le fichier TTest.cpp)








Code :




class VariableGlobale{
public:staticint i_nbrCaracResol;
};






CLASSE 3 : (dans le ficher Display.cpp)








Code :




void CDisplay::DisplayAxe(CDC &memDC)
{
szTmp = DblToStr(dNum);
}






FONCTION DdlToStr : (dans le fichier Display.cpp)








Code :



CString CDisplay::DblToStr(double num)
{
CString szTmp;
Int test_variable;
 
test_variable = VariableGlobale::i_nbrCaracResol;
szTmp.Format("%.6f", num);
return(szTmp);
}




Voici l'erreur que mon compiltateur me retourne :





Citation:



C:\...\Display.cpp(96) : error C2653: 'VariableGlobale' : is not a class or namespace name

C:\...\\Display.cpp(97) : error C2065: 'i_nbrCaracResol' : undeclared identifier

TTest.cpp




Je ne comprends pas bien pourquoi il ne reconnait pas ma variable qui est pourtant bien "PUBLIC" ...


Est-ce que vous auriez une petite idée pour me dépanner un peu ? ...

(ps : j'ai modifier certains type de données pour que cela corresponde mieux à ce que je veux faire ... mais le principe reste le même ... )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
6 mars 2009 à 10:16
{

VariableGlobale::i_nbrCaracResol = 1;
}

--> C'est pas comme ça qu'on déclare une classe

Tu peux effectivement créer une classe VariableGlobale pour ton problème

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
6 mars 2009 à 22:04
VariableGlobale::i_nbrCaracResol = 1;
doit être remplacé par




int VariableGlobale::i_nbrCaracResol = 1;




qui doit être placé en dehors de toute fonction


_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Rejoignez-nous