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

  FORUM HardWare.fr
  Programmation
  C++

  Passage d'une Structures en parametre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage d'une Structures en parametre

n°1299443
XSterna
Posté le 05-02-2006 à 19:26:05  profilanswer
 

Les structures me posent vraiment probleme  :fou:  
 
Voila, dans une classe Model, j'ai declaré une structure Case.
Dans une classe View, je souhaite pouvoir dessiner cette Case et j'ai donc une methode DrawCase qui doit avoir en parametre une Case.
 
Voici l'en tête Model :
 

Code :
  1. class Model{
  2. public:
  3.   Model();
  4.   ~Model(){};
  5.   struct Pion{ 
  6.     int numeropion;
  7.     int numerocase;
  8.     bool couleur;
  9.   };
  10.   struct Case{
  11.     int numerocase;
  12.     bool couleur;
  13.     Pion* pion;
  14.   };
  15. private:
  16. };


 
l'en tete de View suivit de sa source
 

Code :
  1. #include "Model.h"
  2. #ifndef View_h
  3. #define View_h
  4. class View{
  5. public:
  6.   View();
  7.   ~View(){};
  8.  
  9.   void drawCase(struct Case * c, EasyWindow* _fenetre);
  10. private:
  11.   EasyWindow* fenetre; // Fenetre graphique
  12.  
  13. };


 

Code :
  1. void View::drawCase(struct Case * c, EasyWindow* _fenetre){// Dessine une Case
  2.   cout<<c->numerocase<<endl;
  3. }


 
Cependant, ca ne marche pas  :D  et voici l'erreure de compilation
View.cpp:23: error: invalid use of undefined type `struct Case'
View.h:23: error: forward declaration of `struct Case

 
View.cpp:23 correspond a la ligne 2 de la source cpp
et View.h:23: à la ligne 12 de l'en tete view
 
J'ai l'impression que l'objet View ne connait tout simplement pas la structure Case alors que je fait bien un include de Model.  
Je me demande donc s'il est vraiment possible pour View de voir la declaration de Case ds l'Objet Model ...

mood
Publicité
Posté le 05-02-2006 à 19:26:05  profilanswer
 

n°1299446
skelter
Posté le 05-02-2006 à 19:38:37  profilanswer
 

on est pas en C, le 'struct' est de trop et Case est un type encapsulé dans Model, sont nom dans le context global est Model::Case
 

Code :
  1. void drawCase(Model::Case * c, EasyWindow* _fenetre);


 
et utilises plutot des références


Message édité par skelter le 05-02-2006 à 19:39:01
n°1299447
XSterna
Posté le 05-02-2006 à 19:48:32  profilanswer
 

Ouhla, j'aurai jamais pensé à ca. Merci bien (une fois de plus) :)
 
Sinon, qu'entends tu par "utilises plutot des références" ?

n°1299449
_darkalt3_
Proctopathe
Posté le 05-02-2006 à 19:55:33  profilanswer
 

référence == contraire au passage par valeur (ou copie)

n°1299450
skelter
Posté le 05-02-2006 à 19:56:47  profilanswer
 

ta methode 'drawCase' attend un argument de type pointeur sur 'Case' sans doute pour eviter la recopie d'un objet Case (dans ce cas passe un pointeur sur 'const Case' si tu ne modifie pas l'objet pointé dans la fonction) mais en C++ tu peux utiliser une reference, l'utilisation est transparente
 

Code :
  1. void View::drawCase(const  Model::Case & c, EasyWindow* _fenetre){// Dessine une Case
  2.        cout<<c.numerocase<<endl;
  3. }


Message édité par skelter le 05-02-2006 à 19:57:13
n°1299455
XSterna
Posté le 05-02-2006 à 20:01:56  profilanswer
 

Ok je comprend mieux, merci  :)


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

  Passage d'une Structures en parametre

 

Sujets relatifs
Probleme d'indirection sur structurespasser un parametre a une fonction
eviter passage à la ligne avec print VBA - Recevoir un tableau comme parametre d'une méthode
passage de String en Ascii et d'ascii en string ???Passage de paramètre PHP/JS -> XSL ?
Parametre de fonctionafficher un message au passage de la souris
[RESOLU]Passer un paramètre avec des espaces 
Plus de sujets relatifs à : Passage d'une Structures en parametre


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