Une classe dans une classe

Résolu
Inconnu Anonyme Messages postés 12 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 19 juin 2005 - 17 juin 2005 à 22:19
Inconnu Anonyme Messages postés 12 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 19 juin 2005 - 17 juin 2005 à 22:39
Bonjour, j'ai un petit prob avec mon code pour avoir 2 classes dans ma classe primaire:



Type TpPersonne = Class

private

NomA : string;

PrenomA : string;

public

Date_naissance : TpDate_nais; //classe

Adresse : TpAdresse; //classe

constructor Init(NomB, PrenomB:string);overload;

constructor Create;Overload;



end;



et cela pour utiliser les méthodes de ses champs. Ensuite, j'appelle le
constructeur du second objet à partir du constructeur du premier:



constructor
TpPersonne.Create;

begin

Date_naissance : =
TpDate_nais.Create;

Adresse := TpAdresse.Create;

end;



on retrouve plus bas mes 2 autres classes : TpAdress et TpDate_nais avec les champs et constructeurs pour chacun.

Et cela ne marche pas, j'obtient comme erreur que TpDate_nais et TpAdresse ne sont pas déclarés.



Merci.

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
17 juin 2005 à 22:33
Avant de déclarer ta classe TpPersonne, ajoute ces deux lignes :

TpDate_nais = class; //forward declaration
TpAdresse = class; //forward declaration

Tu peux aussi déclarer ces deux classes avant TpPersonne si elles en font pas référence à leur tour à la classe TpPersonne.

Question : pourquoi utilises-tu les directives Overload dans :
constructor Init(NomB, PrenomB:string);overload;
constructor Create;Overload;

dans la mesure où cette directive est réservée aux fonctions portant le même nom mais comportant des arguments différents ?

<HR color =#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3
Inconnu Anonyme Messages postés 12 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 19 juin 2005
17 juin 2005 à 22:39
Merci beaucoup, cela fonctionne :)



Lors de la création de mon application , j'ai utilisé:

constructor Init(NomB, PrenomB:string);overload;

constructor Init;Overload;



et je l'ai changé par la suite par Create.

Merci du conseil, je ne savais pas que overload; était réservée aux fonctions portant le même nom!
0
Rejoignez-nous