begin process at 2012 05 30 05:33:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Problème de visibilité


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de visibilité

samedi 14 novembre 2009 à 01:28:02 | Problème de visibilité

opossum_farceur

Salut,
Dans mon projet, je voudrais bien arriver à compiler quelque chose que l'on pourrait schématiser par le code suivant :

Code C/C++ :
#include <stdio.h>
#include <string.h>

class c1 {
   char s1[10];
   public:
      void f1(c2* p) {p->g2();};
      void g1() {printf("%s\n",s1);};
      c1(char* s) {strcpy(s1,s);};
};

class c2 {
   char s2[10];
   public:
      void f2(c1* p) {p->g1();};
      void g2() {printf("%s\n",s2);};
      c2(char* s) {strcpy(s2,s);};
};

int main(int argc,char** argv)
{
   c1 truc("truc");
   c2 bidule("bidule");

   truc.f1(&bidule);
   bidule.f2(&truc);

   return 0;
}


Ce code est refusé par le compilateur car dans la classe c1 on fait référence à la classe c2 laquelle n'est pas encore déclarée.
Si on déclare la classe c2 avant la classe c1, c'est alors au niveau de c2 que çà coince, vu que l'on y fait référence à la classe c1.
Merci pour votre aide.
samedi 14 novembre 2009 à 03:03:08 | Re : Problème de visibilité

uaip

Salut,
Si ça peut t'aider... http://www.cppfrance.com/forum/sujet-INCLUDE-CIRCULAIRES_105831.aspx

En fait, j'avais un autre lien, qui résolvait entièrement le problème, mais je ne le trouve plus.


Cordialement, uaip.
samedi 14 novembre 2009 à 09:49:44 | Re : Problème de visibilité

Lucky92

Salut,

une solution consiste à prédéclarer la classe c2 avant la classe c1 ; mais la déclaration de la classe c1 ne peut plus faire appel à des membres de la classe c2. Donc, il faut définir la méthode c1::f1 après la déclaration de la classe c2.
Voici ton code modifié pour qu'il compile :

Code C/C++ :
#include <stdio.h>
#include <string.h>

class c2 ;

class c1 {
   char s1[10];
   public:
      void f1(c2* p) ;//{p->g2();};
      void g1() {printf("%s\n",s1);};
      c1(char* s) {strcpy(s1,s);};
};

class c2 {
   char s2[10];
   public:
      void f2(c1* p) {p->g1();};
      void g2() {printf("%s\n",s2);};
      c2(char* s) {strcpy(s2,s);};
};

void c1::f1(c2* p) {p->g2();};

int main(int argc,char** argv)
{
   c1 truc("truc");
   c2 bidule("bidule");

   truc.f1(&bidule);
   bidule.f2(&truc);

   return 0;
}


Cordialement,
Lucky92.
samedi 14 novembre 2009 à 14:27:41 | Re : Problème de visibilité

opossum_farceur

Merci pour ce débloquage express, on peut dire que çà n'a pas traîné!
Je réalise au passage que l'expression "communauté des développeurs" n'est pas usurpée.
Et encore mille fois merci.


Cette discussion est classée dans : code, classe, char, c1, c2


Répondre à ce message

Sujets en rapport avec ce message

heritage [ par ifren ] Salut , je fais un stage, et je veux avoir une idée dite (idiomatique) pour resoudre un probleme en c++Probleme: J'ai une classe C (abstra heritage [ par ifren ] Salut , je fais un stage, et je veux avoir une idée dite (idiomatique) pour resoudre un probleme en c++Probleme: J'ai une classe C (abstra Inter action entre classe [ par lcamps ] Bonjour,J'ai un problème (basique je pense) d'utilisation de classe en C++ sous linux.J'ai deux classes C1 et C2.Je veux déclarer une liste d'objet C1 Au secour [ par Vie2006 ] je fais un programme en C.  je dois rempire une tabeleau de caractere (une chaine).Mais à la fin, je me trouve avec la meme chaine de caracteres dans  char + int dans un tableau d'unsigned char [ par sevenace ] Bonjour, Voici ce que je rentre à ma classe: Carte C("Nom", "Prenom", 14, 12, 3, 14, 30, 0)      //Nom & Prenom -> char Nom[32] & Prenom[32] (attrib Probleme avec des pointeurs [ par KissyFroth ] Voici mon code : char * t1 = new char [30]; char * t2 = new char [40]; //Les chiffres ne sont pas exact mai c pas grave cout << strlen(t1) << "\n"; c [.net c++] explication d'un code [ par stgi02 ] <span lang="EN-GB" style="FONT-SIZE: 10pt; COLOR: bl Prob avec les variables [ par Ilsundal ] Bonjour a tous,voila mon probleme, j'ai declaré une variable, mais quand je lui assigne par exemple  : MAISON, il m'affiche que M. comment faire pour STL vector et tableau [ par cybermax62 ] j'ai une petite question sur la classe template vector. je sais que c'est possible d'initiliser un vector avec un tableau point de vue C (char[]). j'a pb de code source [ par Peabody ] Bonjour à tous,Alors voila je debute en C et mon programme a un petit problème.Voici le code source:#include #include #define maxi 5void main (void){ 


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 14,430 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales