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 :
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();
};
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
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;
}
Mon formulaire dans lequel je souhaite passer une instance de cette classe via le constructeur surchargé.
FrmContexte.h :
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;
FrmContexte.cpp :
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;
}
Dans un formulaire SDI de base, avec un menu perso (juste pour faire un test)
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