[C++] inclusion multiple.
Résolu/Fermé
Panda jack
Messages postés
54
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
18 avril 2012
-
16 avril 2012 à 15:21
Panda jack Messages postés 54 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 18 avril 2012 - 18 avril 2012 à 15:50
Panda jack Messages postés 54 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 18 avril 2012 - 18 avril 2012 à 15:50
A voir également:
- [C++] inclusion multiple.
- Liste déroulante choix multiple excel - Guide
- Ecran multiple pc - Guide
- Windows presse papier multiple - Guide
- Formule excel multiple d'un nombre ✓ - Forum Excel
- Windows bureau multiple - Guide
4 réponses
Utilisateur anonyme
16 avril 2012 à 15:24
16 avril 2012 à 15:24
salut !
je pense que comme pour le mvc, tes classes ne doivent pas s'inclure entre elles mais simplement le main.
enfin je veux dire qu'il faut que tu fasse tes liaisons uniquement de manière hierarchique, et donc que les classes model n'incluent pas d'autres models, et de même pour les controlleur.
En fait il faut que sépare clairement les traitements je pense.
bne chance !
je pense que comme pour le mvc, tes classes ne doivent pas s'inclure entre elles mais simplement le main.
enfin je veux dire qu'il faut que tu fasse tes liaisons uniquement de manière hierarchique, et donc que les classes model n'incluent pas d'autres models, et de même pour les controlleur.
En fait il faut que sépare clairement les traitements je pense.
bne chance !
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 avril 2012 à 15:57
16 avril 2012 à 15:57
Bonjour,
Le C++ est différent du Java, il faut penser autrement.
En C++ les fichiers sont séparé, il y a plusieurs compilation.
Les règles pour les fichiers .h c'est de mettre des balises de garde :
Ensuite, il faut que les .h ne contiennent que les déclarations, c'est à dire que les morceaux de code et de membres de classe doivent être mis dans un autre fichier, un fichier source.
Essai de simlpifier au maximum ton problème pour en faire un "demonstrateur". Ou/et copie ici la sortie erreur que te donne le compilateur.
Le C++ est différent du Java, il faut penser autrement.
En C++ les fichiers sont séparé, il y a plusieurs compilation.
Les règles pour les fichiers .h c'est de mettre des balises de garde :
#ifdef _BALISE #define _BALISE ... // ton code #endifdans chaque fichier .h avec bien entendu un nom différent pous _BALISE.
Ensuite, il faut que les .h ne contiennent que les déclarations, c'est à dire que les morceaux de code et de membres de classe doivent être mis dans un autre fichier, un fichier source.
Essai de simlpifier au maximum ton problème pour en faire un "demonstrateur". Ou/et copie ici la sortie erreur que te donne le compilateur.
Panda jack
Messages postés
54
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
18 avril 2012
7
Modifié par Panda jack le 18/04/2012 à 14:29
Modifié par Panda jack le 18/04/2012 à 14:29
Bonjour,
tout d'abord, merci de vos réponse. Cependant malgré vos conseil je n'ai pas réussi a faire fonctionner mon code. Voici un aperçu simplifier de du contenus de mes fichiers.
Le controelur:
le header:
la source
La fenetre:
le header:
la source:
Le main:
Les erreurs:
Voilà, cela est un peut indigeste, merci d'avance de vos réponses.
tout d'abord, merci de vos réponse. Cependant malgré vos conseil je n'ai pas réussi a faire fonctionner mon code. Voici un aperçu simplifier de du contenus de mes fichiers.
Le controelur:
le header:
#ifndef CONTROLEUR_H #define CONTROLEUR_H #include "fenetre.h" class controleur{ public: conroleur(); private: fenetre *fen; }; #endif
la source
#include "controleur.h" controleur::controleur(){ fen= new fenetre(&this); fen->show(); }
La fenetre:
le header:
#ifndef FENETRE_H #define FENETRE_H #include "controleur.h" class fenetre{ public: fenetre(controleur *control); private: controleur *control; //[...] la déclaration des différent item de ma fenetre }; #endif
la source:
#include "reservation.h" fenetre::fenetre(controleur *Control){ control=Control; //[...] tout le reste inutile}
Le main:
#include "controleur.h" int main(int argc, char *argv[]){ controleur control; return 0; }
Les erreurs:
expeted ")" befor "*" token //a la ligne de la déclaration du constructeur dans fenetre.h ISO C++ forbids declaration of 'controelur' whith no type //a la ligne "controelur *control" de fenetre.h expected ";" befor token "*"//à la même ligne
Voilà, cela est un peut indigeste, merci d'avance de vos réponses.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
18 avril 2012 à 15:11
18 avril 2012 à 15:11
ok, je crois voir le problème, tu as des classes interdépendante, c'est à dire que A utilise B, mais B utilise A.
Dans ce cas là il faut faire une déclaration de classe vide :
Dans ce cas là il faut faire une déclaration de classe vide :
La fenetre: le header: #ifndef FENETRE_H #define FENETRE_H class controleur; class fenetre{ public: fenetre(controleur *control); private: controleur *control; //[...] la déclaration des différent item de ma fenetre }; #endifJ'espère qu'il n'y a pas autant de fautes de frappe dans ton vrai code.
Panda jack
Messages postés
54
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
18 avril 2012
7
18 avril 2012 à 15:20
18 avril 2012 à 15:20
Merci, je test cela et je vous redonne des nouvel. Et rassurée vous mon code ne contient pas de faute de frappe, c'est juste que je l'ai recopier au lieux d'un copier/coller.
Panda jack
Messages postés
54
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
18 avril 2012
7
18 avril 2012 à 15:50
18 avril 2012 à 15:50
Géniale ! Cela marche a merveille, merci beaucoup de m'avoir sorti de l'impasse.