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

  FORUM HardWare.fr
  Programmation
  C++

  declaration de class imcomprehensible [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

declaration de class imcomprehensible [résolu]

n°2253664
bqron
We become what we think about.
Posté le 19-03-2015 à 17:28:22  profilanswer
 

Hummm... je sais vraimant pas comme l'expliquer celle là :
 
 

Code :
  1. #include <iostream>
  2. #include "B"
  3. class A; // sachant que ces class sont correctement construitent ailleurs,  
  4. class C; // mais je ne comprends pas ces lignes ? a quoi sertce genre de déclaration ?  
  5. class D; // cela remplace-t-il les includes ?
  6. class E; //
  7. class MaClass
  8. {
  9. private:
  10.   int m_var;
  11. public:
  12.   MaClass() : m_var(0)
  13.   {
  14.   }
  15.   ~MaClass() {}
  16.    void setVar(A* a)
  17.    {
  18.       m_var = a->getVarInt();  // pourquoi " a  " ne semble-t-il pas pris en compte par le compilo (cf plus bas.).
  19.    }
  20. };


 
Le compilo rejette le tout en indiquant que l’opérande a gauche de -> doit être de type class/struct/union/generic : error C2227: left of '->getVarInt' must point to class/struct/union/generic type  :??:


Message édité par bqron le 19-03-2015 à 19:19:53
mood
Publicité
Posté le 19-03-2015 à 17:28:22  profilanswer
 

n°2253672
Terminapor
I'll see you rise.
Posté le 19-03-2015 à 17:45:20  profilanswer
 

C'est une forward declaration, ça veut juste dire que "A" est une classe.
Ca permet d'avoir des pointeurs ou référence sur A, vu que ces qualifiers ne demandent pas à connaitre la nature entière du type.
 
Par contre, si tu fais a->method( ... ), là il te faut la déclaration complete.
 
Faudrait que tu câble ça comme ça :  
 

Code :
  1. class A;
  2. class MaClass
  3. {
  4.     private:
  5.         int m_var;
  6.     public:
  7.         void setVar(A* a);
  8. };
  9. // Dans un autre fichier hpp ou à la suite :
  10. class A
  11. {
  12.     public: int getVarInt();
  13. };
  14. // Dans un autre fichier cpp ou à la suite :
  15. int A::getVarInt()
  16. { /*...*/ }
  17. // dans un autre fichier cpp ou à l asuite (il doit include le fichier qui contient la déclaration de A si celle-ci est dans un autre fichier):
  18. void MaClass::setVar(A* a)
  19. {
  20.     m_var = a->getVarInt();
  21. }


---------------
Perhaps you don't deserve to breathe
n°2253694
bqron
We become what we think about.
Posté le 19-03-2015 à 19:19:13  profilanswer
 

Merci, ça m'as aider a y voir plus clair.


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

  declaration de class imcomprehensible [résolu]

 

Sujets relatifs
applet et class[DELPHI] initialiser un string dans sa déclaration...
FatalErrorException: Error: Class 'Doctrine\Bundle\FixturesBundle\DocPHP Fatal error: Class 'DoctrineBundleFixturesBundle not found
Unable to load class "Twig_Environment"no class definition found exception
JAXB JSON extends classdéclaration d'un vector de pointeur
sauvegarder en session une action .Class JqueryProblème de class introuvable à la génération
Plus de sujets relatifs à : declaration de class imcomprehensible [résolu]


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