Question Débutant sur portée d'une instance de classe dans une FORM
1 réponse
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:
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
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.
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.
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.