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

  FORUM HardWare.fr
  Programmation
  C++

  prob de declaration

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

prob de declaration

n°1066435
dreamkille​r
Posté le 30-04-2005 à 00:30:01  profilanswer
 

voila j'ai un prob de declaration et je sais pas d'ouca vien c'est sur les lignes 20
 
 
 

Code :
  1. #if !defined(AFX_IHM_PCCONTROL_H__33B71AB2_EAB0_4DEB_BE09_EED7E700FEE1__INCLUDED_)
  2. #define AFX_IHM_PCCONTROL_H__33B71AB2_EAB0_4DEB_BE09_EED7E700FEE1__INCLUDED_
  3. #include "horloge.h"
  4. #include "GestionSelfDlg.h"
  5. #if _MSC_VER > 1000
  6. #pragma once
  7. #endif // _MSC_VER > 1000
  8. // IHM_PcControl.h : header file
  9. //
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CIHM_PcControl dialog
  12. class CGestionSelfDlg;
  13. class CIHM_PcControl : public CDialog
  14. {
  15. // Construction
  16. public:
  17. CGestionSelfDlg m_SelfDlg;
  18. void AfficheNonValide();
  19. void AfficheRegime(CString strRegime);
  20. void AffichePrenom(CString strPrenom);
  21. void AfficheNom(CString strNom);
  22. void AfficheAutorise();
  23. CIHM_PcControl(CWnd* pParent = NULL);   // standard constructor
  24. void AffichePlageHoraire(CString strPlageMin, CString strPlageMax);
  25. void HorsPlageHoraire();
  26. // Dialog Data
  27. //{{AFX_DATA(CIHM_PcControl)
  28. enum { IDD = IDD_PCCONTROLE_DIALOG };
  29.  // NOTE: the ClassWizard will add data members here
  30. //}}AFX_DATA
  31. // Overrides
  32. // ClassWizard generated virtual function overrides
  33. //{{AFX_VIRTUAL(CIHM_PcControl)
  34. protected:
  35. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  36. //}}AFX_VIRTUAL
  37. // Implementation
  38. protected:
  39. // Generated message map functions
  40. //{{AFX_MSG(CIHM_PcControl)
  41. afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
  42. virtual BOOL OnInitDialog();
  43. afx_msg void OnTimer(UINT nIDEvent);
  44. afx_msg void PassageAutorise();
  45. afx_msg void CarteNonValide();
  46. afx_msg void HorsPlage();
  47. //}}AFX_MSG
  48. DECLARE_MESSAGE_MAP()
  49. private:
  50. //CHorloge mClock;
  51. };
  52. //{{AFX_INSERT_LOCATION}}
  53. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  54. #endif // !defined(AFX_IHM_PCCONTROL_H__33B71AB2_EAB0_4DEB_BE09_EED7E700FEE1__INCLUDED_)


 
et 23

Code :
  1. #if !defined(AFX_IHM_PCCONTROL_H__33B71AB2_EAB0_4DEB_BE09_EED7E700FEE1__INCLUDED_)
  2. #define AFX_IHM_PCCONTROL_H__33B71AB2_EAB0_4DEB_BE09_EED7E700FEE1__INCLUDED_
  3. #include "horloge.h"
  4. #include "GestionSelfDlg.h"
  5. #if _MSC_VER > 1000
  6. #pragma once
  7. #endif // _MSC_VER > 1000
  8. // IHM_PcControl.h : header file
  9. //
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CIHM_PcControl dialog
  12. class CGestionSelfDlg;
  13. class CIHM_PcControl : public CDialog
  14. {
  15. // Construction
  16. public:
  17. CGestionSelfDlg m_SelfDlg;
  18. void AfficheNonValide();
  19. void AfficheRegime(CString strRegime);
  20. void AffichePrenom(CString strPrenom);
  21. void AfficheNom(CString strNom);
  22. void AfficheAutorise();
  23. CIHM_PcControl(CWnd* pParent = NULL);   // standard constructor
  24. void AffichePlageHoraire(CString strPlageMin, CString strPlageMax);
  25. void HorsPlageHoraire();
  26. // Dialog Data
  27. //{{AFX_DATA(CIHM_PcControl)
  28. enum { IDD = IDD_PCCONTROLE_DIALOG };
  29.  // NOTE: the ClassWizard will add data members here
  30. //}}AFX_DATA
  31. // Overrides
  32. // ClassWizard generated virtual function overrides
  33. //{{AFX_VIRTUAL(CIHM_PcControl)
  34. protected:
  35. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  36. //}}AFX_VIRTUAL
  37. // Implementation
  38. protected:
  39. // Generated message map functions
  40. //{{AFX_MSG(CIHM_PcControl)
  41. afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
  42. virtual BOOL OnInitDialog();
  43. afx_msg void OnTimer(UINT nIDEvent);
  44. afx_msg void PassageAutorise();
  45. afx_msg void CarteNonValide();
  46. afx_msg void HorsPlage();
  47. //}}AFX_MSG
  48. DECLARE_MESSAGE_MAP()
  49. private:
  50. //CHorloge mClock;
  51. };
  52. //{{AFX_INSERT_LOCATION}}
  53. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  54. #endif // !defined(AFX_IHM_PCCONTROL_H__33B71AB2_EAB0_4DEB_BE09_EED7E700FEE1__INCLUDED_)


 
 
 
merci d'avance

mood
Publicité
Posté le 30-04-2005 à 00:30:01  profilanswer
 

n°1066469
IrmatDen
Posté le 30-04-2005 à 01:03:51  profilanswer
 

Salut,

Code :
  1. #include "GestionSelfDlg.h"
  2. ...
  3. class CGestionSelfDlg;


Pourquoi redéclarer une classe incluse ?
Soit tu utilises les forward déclarations, qui ne peuvent être utilisées qu'avec des pointeurs et donc tu modifies

Code :
  1. CGestionSelfDlg m_SelfDlg

en

Code :
  1. CGestionSelfDlg *m_SelfDlg

et tout le code de ton .cpp. Soit tu vires ladite déclaration.

n°1066514
dreamkille​r
Posté le 30-04-2005 à 09:24:11  profilanswer
 

ben disons que la pre declaratin des classes mon prof m'en avait parlé en cas de probleme mais la ca marche pas et a paet un pointeur y a pas d'autre solution

n°1066516
dreamkille​r
Posté le 30-04-2005 à 09:27:36  profilanswer
 

ben en mettant un pointeur en faite j'ai pluis de prob a la compilation mais a l'execution c'est un carnage access violation

n°1066828
IrmatDen
Posté le 30-04-2005 à 14:45:40  profilanswer
 

L'intérêt des forward declarations, c'est de gagner du temps à la compilation.
Je m'explique : ton compilateur compilera tout les .cpp modifiés. Si tu modifies un header, tout les .cpp qui l'incluent seront donc recompilés. Ce qui revient à dire que si tu modifies GestionSelfDlg.h qui est inclus par IHM_PcControl.h, le code de GestionSelfDlg.cpp (s'il s'appelle comme ça) sera recompilé (normal). Mais, IHM_PcControl.h aura aussi été modifié et donc IHM_PcControl.cpp (s'il s'appelle comme ça encore une fois) sera aussi recompilé, ce qui est normal aussi puisqu'il utilise CGestionSelfDlg.
Là où ça devient génant, c'est lorsque IHM_PcControl.h est inclus dans d'autre fichiers (h ou cpp). La recompilation de ces fichiers deviendra obligatoire alors qu'il n'utilise peut-être pas ton instance de CGestionSelfDlg. D'où un suplément de temps de compilation inutile.
Alors que si tu utilises la forward declaration, tu dois déclarer un pointeur (et donc bien sûr l'allouer et le libérer quand il faut). Cette manip fait en sorte que tu n'ait pas à recompiler des fichiers qui ne devrait pas l'être.
 
J'espère que cette explication n'est pas un "plat de spaghetti" et que c'est à peu près clair...

n°1067314
dreamkille​r
Posté le 30-04-2005 à 23:09:19  profilanswer
 

je veux bien mais a part ralentir la comppilation ca exprique aps pourquoi ca marche pas
 
 
le message d'erreur exacte est :
Compiling...
GestionSelf.cpp
d:\programmation\c++\msdev98\myprojects\gestionself\ihm_pccontrol.h(23) : error C2079: 'm_SelfDlg' uses undefined class 'CGestionSelfDlg'
GestionSelfDlg.cpp
d:\programmation\c++\msdev98\myprojects\gestionself\ihm_pccontrol.h(23) : error C2079: 'm_SelfDlg' uses undefined class 'CGestionSelfDlg'
IHM_PcControl.cpp
d:\programmation\c++\msdev98\myprojects\gestionself\gestionselfdlg.h(27) : error C2079: 'm_PcControlDlg' uses undefined class 'CIHM_PcControl'
Generating Code...
Error executing cl.exe.
 
GestionSelf.exe - 3 error(s), 0 warning(s)
 
 
 :cry:  :sweat:


Message édité par dreamkiller le 30-04-2005 à 23:11:23
n°1067538
dreamkille​r
Posté le 01-05-2005 à 11:37:39  profilanswer
 

a chaque fois que je rajoute un objet de type CGestionSelfDlg dans une autre classe ca me rajoute 3erreur et apres meme en suprimant l'objet impossible de supprimer toutes les erreurs

n°1067558
chrisbk
-
Posté le 01-05-2005 à 12:24:41  profilanswer
 

Citation :

[C++] prob de declaration


 

Code :
  1. std::cout<<"Marlene, je vous aime\n";


 
et vala, une fort belle déclaration en C++ [:god]
 
ne me remercie pas [:klem3i1]


---------------
NP: HTTP Error 764 Stupid coder found
n°1067560
chrisbk
-
Posté le 01-05-2005 à 12:26:48  profilanswer
 

bon, sinon, ton pb c'est que tu fais une forward declaration de CGestionSelfDlg (soit tno class CGestionSelfDlg; ), ce que tu as le droit de faire, mais ensuite tu instancie un objet de ce type, ce que tu n'as pas le droit de faire car le compilo ne connait pas la taille de l'objet a ce moment la
 
Apres une forward, tu peux declarer des pointeurs sur ton type (bzw pointeur de pointeur..) et ds references, mais tu ne peux pas allouer un objet de ce type (ce que tu fais la)
 
Donc au lieu de faire class CGestionSelfDlg;, le mieux c'est de faire un bete #include "lefichierquidefinit CGestionSelfDlg"


Message édité par chrisbk le 01-05-2005 à 12:27:02

---------------
NP: HTTP Error 764 Stupid coder found
n°1067562
dreamkille​r
Posté le 01-05-2005 à 12:31:47  profilanswer
 

je veux bien mais #include "lefichierquidefinit CGestionSelfDlg" je l'ai deja mis c'est le #include "GestionSelfDlg.h" nan

mood
Publicité
Posté le 01-05-2005 à 12:31:47  profilanswer
 

n°1067564
chrisbk
-
Posté le 01-05-2005 à 12:35:51  profilanswer
 

Bon jcrois que tu nous a montré deux fois le meme code non ? et au vu de ets messages d'erreurs, je crois que t'as un fichier A qui inclue B, et B qui inclue aussi A, ce qui ne va pas


---------------
NP: HTTP Error 764 Stupid coder found
n°1067566
dreamkille​r
Posté le 01-05-2005 à 12:41:11  profilanswer
 

ben c'est exactement ca j'ai deux classe A et B.
Dans la classe A j'ai un objet de la classe B et dans la classe B j'ai un objet de la claase A
 

Code :
  1. Class A
  2. {
  3.    B objet_b;
  4. }
  5. Class B
  6. {
  7.    A objet_a;
  8. }


voila en gros cs que je veux faire mais j'y arrive pas :sweat:

n°1067570
chrisbk
-
Posté le 01-05-2005 à 12:46:24  profilanswer
 

bin ca tu peux tout betement pas, vu que ca fait des objets d'une taille infinie.  
 
t'as un gros pb de conception


---------------
NP: HTTP Error 764 Stupid coder found
n°1067575
dreamkille​r
Posté le 01-05-2005 à 12:50:41  profilanswer
 

ben en faite je savais pas que c'etait impossible et mer.. :cry:  :cry:  :cry:  
bon ben on reprend la phase d'analyse :sweat:  
merci quand meme
 :jap:

n°1067588
skelter
Posté le 01-05-2005 à 13:00:16  profilanswer
 

dreamkiller a écrit :

ben en faite je savais pas que c'etait impossible et mer.. :cry:  :cry:  :cry:  


 
et ca c'est possible ?

Code :
  1. class A
  2. {
  3.     A objet_a;
  4. }

n°1067589
chrisbk
-
Posté le 01-05-2005 à 13:00:50  profilanswer
 

bin non plus, objet de taille infinie
 
fo passer des ptrs


---------------
NP: HTTP Error 764 Stupid coder found
n°1067593
skelter
Posté le 01-05-2005 à 13:04:25  profilanswer
 

chrisbk a écrit :

bin non plus, objet de taille infinie
 
fo passer des ptrs


 
 
c'etait de l'ironie :D, dans le meme genre (pour moi c'est la mem chose)

n°1067595
dreamkille​r
Posté le 01-05-2005 à 13:06:52  profilanswer
 

j'ai comme l'impression qu il y a du foutage de gueulle y en a qui on jamais fait d'erreur et qui savait tous des le debut  :pfff:

n°1067597
skelter
Posté le 01-05-2005 à 13:08:41  profilanswer
 

ouai excuse moi


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  prob de declaration

 

Sujets relatifs
html : Prob de fenetreProb syntaxe pour recuperer des taches planifiés
prob de transformation d'un xml via php[Reglé] Prob de tableaux sous IE (mais pas sous Firefox bien sur)
tableau 100% sa marche mais euuuuh lire pour comprendre le prob ...Pas facile d'avoir de l'aide ici !!!!!! HELP ! Prob.formulaire !
Déclaration d'un stringPtit prob d'expression régulière
tjours prob avec fgetcsv .. + clairprob au moment du linkage: multiple declaration of.......
Plus de sujets relatifs à : prob de declaration


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR