Bonjour à tous, et à toutes,
Arrivant de C# je débarque sur un projet en Borland C++ Builder XE, et bien entendu le passage de C# à C++ sous Borland est un chemin parcouru d’embuches…
Je rencontre donc un petit problème « tout simple », et surtout de base que vous avez forcément rencontrée à un moment ou à un autre…
Je cherche tout simplement à surcharger le constructeur par défaut d’un formulaire (fiche chez Borland) en lui ajoutant comme paramètre supplémentaire une classe.
C’est une version un brin plus complexe que dans ce sujet là : URL="http://www.developpez.net/forums/d232088/c-cpp/outils-c-cpp/cppbuilder/surcharge-constructeur-form/"]Surcharge-constructeur-form[/URL]
Petite explication de ce que je cherche à faire :
J’ai un formulaire FrmContexte, qui contient un ensemble de contrôles.
Je veux donc charger des valeurs par défaut dans c’est contrôles via les variables membres d’une classe.
À la validation du formulaire FrmContexte, je sauvegarde le contenu de mes contrôles dans la classe et je retourne cette dernière.
Ensuite pour l’initialisation de la classe, je compte passer par un fichier xml. Et idem pour la sauvegarde des infos de la classe.
Mon problème est le suivant : Je ne sais pas comment faire pour passer en paramètre à mon constructeur de formulaire, ma classe de données.
Voici mon code :
ClasseTest.h :
ClasseTest.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class ClasseTest{ private: int _nombrePlaces;//Déclaration des variables membres de la classe public: ClasseTest();//Constructeur standard ~ClasseTest();//Destructeurs //Déclaration des propriétés de la classe void setNombrePlaces(int nombrePlaces); int getNombrePlaces(); };
Mon formulaire dans lequel je souhaite passer une instance de cette classe via le constructeur surchargé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include "ClasseTest.h" //Définition du constructeur et du destructeur de la classe ClasseTest::ClasseTest(){ _nombrePlaces=0; } ClasseTest::~ClasseTest(){ } //Définition des propriétés de la classe int ClasseTest::getNombrePlaces(){ return _nombrePlaces; } void ClasseTest::setNombrePlaces(int nombrePlaces){ _nombrePlaces=nombrePlaces; }
FrmContexte.h :
FrmContexte.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //#include "ClasseTest.h"//pas possible sinon erreur de redéfinition multiple de la classe ClasseTest class TFormContexte : public TForm { __published: public: __fastcall TFormContexte(TComponent* Owner);//Constructeur par défaut. __fastcall TFormContexte(TComponent* Owner, ClasseTest p_ClasseTest);//Constructeur surcharger perso } ; extern PACKAGE TFormContexte *FormContexte;
Dans un formulaire SDI de base, avec un menu perso (juste pour faire un test)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "ClasseTest.h" ClasseTest m_ClasseTest; __fastcall TFormContexte::TFormContexte(TComponent* Owner) : TForm(Owner) { } __fastcall TFormContexte::TFormContexte(TComponent* Owner, ClasseTest p_ ClasseTest) : TForm(Owner) { m_ ClasseTest = p_ClasseTest; }
SDIMain.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "ClasseTest.h" void __fastcall TSDIAppForm::Action_MenuTest_ContexteExecute(TObject *Sender) { ClasseTest* l_ClasseTest;//Déclaration de ma variable locale du type ClasseTest l_ClasseTest= new ClasseTest();//on initialise l'instance de la l_ClasseTest avec le constructeur par défaut //... et on la passe en paramètre au constructeur surcharger du formulaire TFormContexte* l_ptTFormContexte = new TFormContexte(NULL, l_ClasseTest); l_ptTFormContexte->ShowModal(); }
Actuellement je me retrouve coincer car dans FrmContexte.h, ma classe de données ClasseTest, n'est pas connue (pas de référence à cette dernière).
Je ne peut pas mettre un #include "ClasseTest.h, sous peine d'avoir une erreur de redéfinition de ma classe ClasseTest.
Si quelqu’un a une idée, une piste, voire même un exemple je suis preneur!
Merci d’avance à tous, et toutes pour votre aide![]()
Partager