aggregation par reference [C++] - Programmation
Marsh Posté le 24-12-2001 à 09:56:36
Il faut utiliser le constructeur/destructeur de ta classe : quand elles sont déclarées et implémentées, ces deux fonctions se lancent automatiquement :
- à la création d'un objet de cette classe (constructeur)
- à la destruction d'un objet de cette classe (destructeur)
class station
{
private :
int numsta;
char *nom;
appareil *app;
public :
station(); // prototype du constructeur
~station(); // prototype du destructeur
}
station::station()
{
/* dans le constructeur, tu écris toutes les initialisation */
}
station::~station()
{
/* dans le destructeur, tu écris toutes les instructions termiales, comme par exemple la libération de la mémoire que tu as allouée dynamiquement */
}
L'idée, c'est que dans le constructeur de "station", tu crée un nouvel objet "appareil" que tu auras préalablement équipé d'un constructeur/destructeur.
Mais bon, si tu ne maitrises pas trop ces bestioles, je peux entrer un peu plus dans les détails...
Marsh Posté le 24-12-2001 à 12:29:08
je vois ce que tu veux dire mais en fait, la classe appareil va etre euh... comment dire en fait les appareils sont tous definis, on pourra en rajouter mais c'est tres rare, les appareils sont la avant les stations...
on ma conseille de faire un conteneur (liste ou tableau) mais je ne sais pas trop comment ca marche, quelqu'un peut il m'expliquer?
merci
Marsh Posté le 25-12-2001 à 14:56:33
pourquoi station hériterait pas de la classe appareil ?
Marsh Posté le 25-12-2001 à 15:01:28
Parce que dans l'enonce (et oui c'est pour l'ecole) on me demande de faire une relation d'aggregation par reference entre stations et appareil
voila
Marsh Posté le 25-12-2001 à 15:43:29
et un truc du genre :
class appareil
{
private : int numapp;
char *nom;
char *caracteristiques;
int numero;
public :
appareil();
void appareil(int);
~appareil();
}
class station
{
private : int numsta;
char *nom;
appareil *app;
public :
station();
void pipo(int numero, char* nom, appareil* app);
~station();
}
void appareil::appareil(int numero)
{
numero=this->numero;
}
void station:: pipo(int numero, char* nom, appareil* app)
{
app->appareil(numero);
}
[edtdd]--Message édité par joce--[/edtdd]
Marsh Posté le 25-12-2001 à 17:52:02
Merci pour ta reponse, mais j'aime bien l'idee d'un conteneur, je voudrais faire une liste chainée pour la classe appareil et ensuite dans stations il me suffirait d'aller voir dans la liste chainé, mais le prob c'est que je ne sais pas trop comment faire cette liste...
sais tu me montrer joce? ou meme quelqu'un d'autre?
merci
Marsh Posté le 25-12-2001 à 18:27:25
oula, liste chainée, faudrait que je recherche loin dans mes souvenirs, ca doit faire plus d'un an que j'ai pas fais ni C ni C++
Marsh Posté le 25-12-2001 à 20:16:59
bjone a écrit a écrit : joce >> c'est pas bien d'oublier ses classiques. |
pfff, en plus je vais devoir m'en reboofer plein
Enfin ceci, je me rappelle toujours du principe, c'est le principal
Marsh Posté le 23-12-2001 à 13:40:28
Salut,
j'ai fait une classe appareil et une classe station
j'ai fait une relation d'aggregation par reference entre ces 2 classes (cad qu'il y a un pointeur (appareil *app) dans les variables membres de la classe station)
mon aggregation fonctionne sans probleme, mais j'ai un petit souci pour ceci :
l'utilisateur peut choisir d'encoder une nouvelle station
il rentre tout ce qui concerne la station puis j'aimerai qu'il rentre le numero d'appareil, ensuite le programme initialisera lui meme le pointeur de appareil (l'aggregation) en fonction du numero d'appareil, quelqu'un peut il m'expliquer comment faire cela svp?
merci
class appareil
{
private : int numapp;
char *nom;
char *caracteristiques;
public : blablabla
}
class station
{
private : int numsta;
char *nom;
appareil *app;
public : blablabla
}