Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2106 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Variables dans les classes (accéder à une autre classe)

n°730353
Ace17
Posté le 18-05-2004 à 15:04:00  profilanswer
 

Reprise du message précédent :
Les balises stp....
 
Et sinon, je te rappelle que quand tu fais :

Code :
  1. CInterface Interface;
  2. Interface.m_txt="Au revoir";


tu créées un nouvel objet de type CInterface, ton objet se nomme "Interface", et il sera DETRUIT quand tu sortiras de Appel_Dialog. Tu comprends?
Je ne sais pas quel objet tu utilises pour appeler Affiche_MSG mais c'est pas le meme!

mood
Publicité
Posté le 18-05-2004 à 15:04:00  profilanswer
 

n°730357
choupinou
Posté le 18-05-2004 à 15:10:37  profilanswer
 

Oui mais justement comment je fais pour changer la valeur de l'objet déjà créé?

n°730360
Ace17
Posté le 18-05-2004 à 15:14:54  profilanswer
 

Il te faut récupérer un pointeur ou une référence sur l'objet CInterface qui a été créé au démarrage. D'un point de vue C++, y'a pas de fonction miracle qui te donne ca : que te renverrait-elle donc si tu créais deux objets? D'un point de vue MFC, je ne sais pas, CInterface est peut etre censé etre un singleton??
 
Qui est-ce qui appelle Appel_Dialog? Parce que si c'est un objet de type CInterface tu n'as qu'a rajouter un pointeur CInterface* dans les parametres de Appel_Dialog...

n°730367
Ace17
Posté le 18-05-2004 à 15:20:54  profilanswer
 

En tout cas, comme ca a été dit plus haut par JagStang
"je te conseille fortement d'apprendre les bases de la programmation orienté objet avant de continuer..."


Message édité par Ace17 le 18-05-2004 à 15:21:19
n°730370
choupinou
Posté le 18-05-2004 à 15:23:25  profilanswer
 

Non c'est pas CInterface qui appelle Appel_Dialog.
De toute façon là ce n'est qu'un exemple. J'ai déjà essayé de récupérer un pointeur ou une référence sur l'objet créé mais je ne sais pas quelle valeur lui attribuer. Je ne sais pas du tout comment faire. J'ai essayé de chercher si un pointeur existait lorsque l'objet est créé mais j'ai pas trouvé. Tu sais comment faire et où chercher?

n°730374
Ace17
Posté le 18-05-2004 à 15:26:27  profilanswer
 

Bon, la solution rapide : tu prends un pointeur global de type CInterface* et tu lui affectes la valeur this dans le code d'initialisation de CInterface

n°730442
choupinou
Posté le 18-05-2004 à 16:04:24  profilanswer
 

Pb: j'ai utilisé les MFC et je ne sais pas quand ma classe CInterface est créé. Tout ce que je sais c'est que CInterface est une classe de type CFormView et qui est en fait une vue en mode fomulaire (<=> boite de dialogue) et qu'elle remplace la classe CView normale.
Elle fait partie des fenêtres d'un projet multidocuments.
J'ai aussi ça:

Code :
  1. CMultiDocTemplate* pDocTemplate;
  2. pDocTemplate = new CMultiDocTemplate(IDR_TestTYPE,
  3.  RUNTIME_CLASS(CFEATDoc),
  4.  RUNTIME_CLASS(CChildFrame), // frame enfant MDI personnalisé
  5.  RUNTIME_CLASS(CInterface));  //<- ICI


C'est tout ce que je sais sur la création de mon objet CInterface.

n°730453
Ace17
Posté le 18-05-2004 à 16:09:53  profilanswer
 

Oui mais dans CInterface, y'a bien des fonctions non? Une fonction d'initialisation? Un constructeur au moins!

n°730461
choupinou
Posté le 18-05-2004 à 16:12:52  profilanswer
 

Oui y'a un constructeur et j'utilise OnInitialUpdate pour initialiser ma fenêtre
Constructeur

Code :
  1. CInterface::CInterface()
  2. : CFormView(CInterface::IDD)
  3. {
  4. }


Init

Code :
  1. void CInterface::OnInitialUpdate()
  2. {
  3.     //mes initialisations
  4. }


n°730552
Ace17
Posté le 18-05-2004 à 17:34:21  profilanswer
 

Et ben voila! Tu fais une variable globale!
 

Code :
  1. CInterface* myInterface;
  2. void CInterface::onInitialUpdate()
  3. {
  4.       //mes initialisations
  5.       myInterface = this;
  6. }


 
Cette solution est AFFREUSE. Mais au moins ca te permettra de pas rester bloqué...

mood
Publicité
Posté le 18-05-2004 à 17:34:21  profilanswer
 

n°731059
choupinou
Posté le 19-05-2004 à 09:44:58  profilanswer
 

J'ai essayé de mettre cette variable globale. Il l'a prend bien en variable globale. Au débogueur, cette variable garde bien la même valeur dans les autres classes. Donc ça devrait marcher mais quand j'essais de l'utiliser, il me dit "Interface : identificateur non-déclaré..."

n°731071
Joel F
Real men use unique_ptr
Posté le 19-05-2004 à 09:55:36  profilanswer
 

les variables globales c'est le mal :o

n°731322
Ace17
Posté le 19-05-2004 à 12:37:10  profilanswer
 

Mais parce qu'il faut la déclarer dans les autres fichiers! Tu débutes toi non?  
extern CInterface* myInterface;

n°731328
choupinou
Posté le 19-05-2004 à 12:41:31  profilanswer
 

Oui je débute

n°731499
choupinou
Posté le 19-05-2004 à 14:44:14  profilanswer
 

MERCI BEAUCOUP. Maintenant je vais pouvoir avancer

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Accéder à une base Access à partir de Linux[CGI]comment récupère t on les variables de la query string
Variables globales borland c++ builderIndirection pour des noms de variables
[Fixed!][HTML] (Form) 'action' avec variables en GET ? (Pb)Probleme d'utilisation des variables je crois (PHP + SVG)
Acceder a une page avec un prog java sans passer par la page d'accesPartage de classes statiques entre web-apps
[PHP]Problème avec les variables de session 
Plus de sujets relatifs à : Variables dans les classes (accéder à une autre classe)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)