Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question Débutant sur portée d'une instance de classe dans une FORM

1 réponse
Avatar
jl_cosmocat
Bonjour à tous
Voila, Je débute en C++ Builder et je rencontre un pb au niveau de
l'instanciation d'une classe,de maniere à ce que sa portée soit
globale à une Form.

J'ai sur ma Form1 2 boutons:
Button_initialiser : Instancie la classe avec un parametre utilisé
dans le constructeur
Button_appelMetode : Utilise la classe pour retrouver une propriété

Mon code donne à peu pres ça



Déclaration de Maclasse---------------------------------
Class Maclasse
}
public:

Maclasse(AnsiString Numerocompte) //Constructeur
__property Int UnePropriété = { read=PPropriété };
}



code de la form 1--------------------------------------



void TForm1:Button_initialiserClick(Tobject *Sender)
//----------Premiere procédure
{Moninstance Maclasse("Parametre"); // Instancie la classe}



void TForm1:Button_appelMetodeClick(Tobject *sender)
//----------Seconde procédure
{Int Valeur=Moninstance.Unepropriété; //Utilise la classe}





Bien sur la compilation plante sur void
TForm1:Button_appelMetodeClick(Tobject *sender) car
Moninstance n'est pas déclarée dans cette procédure.


Voici ma question
Ou (et comment) dois-je déclarer Moninstance pour qu'elle soit
visible dans la seconde procédure
en sachant que je ne connais le parametre à passer au constructeur
que dans la procédure 1

PAr exemple Ma classe représente un Compte banquaire et il me faut
demander à l'utilisateur le numéro de compte
avant de pouvoir l'instancier

Merci

1 réponse

Avatar
Alexandre

void TForm1:Button_initialiserClick(Tobject *Sender)
//----------Premiere procédure
{Moninstance Maclasse("Parametre"); // Instancie la classe}


Attention ici MaClasse est une variable LOCALE à la fonction
Button_initialiserClick. Donc elle sera détruite à la fin de celle-ci, et
n'est pas visible ailleurs.


void TForm1:Button_appelMetodeClick(Tobject *sender)
//----------Seconde procédure
{Int Valeur=Moninstance.Unepropriété; //Utilise la classe}

Bien sur la compilation plante sur void
TForm1:Button_appelMetodeClick(Tobject *sender) car
Moninstance n'est pas déclarée dans cette procédure.


Ce qui est bien le cas.



Voici ma question
Ou (et comment) dois-je déclarer Moninstance pour qu'elle soit
visible dans la seconde procédure


Il faut que ton instance MaClasse soit MEMBRE de Form1, puisque les 2
procédures (en fait ce ne sont pas des procédures mais des METHODES, ie des
fonctions membres d'une classe.) sont dans la même classe.

Conseil : regardes sur un bouquin ou un site quelques principes de la
programmation objet.

Merci
De rien.