Salut,
Soit tu utilises un conteneur de la STL, soit (si tu en est contraint) tu fais à la main, comme tu as fait.
Avec le conteneur vector de la STL, par exemple :
Code C/C++ :
class Etiquette {
private:
bool solde;
float prix;
public:
void Saisie(bool s,float p) {
this->solde=s;
this->prix=p;
}
};
class Ensemble {
private:
vector <Etiquette> Liste;
public:
void initialiser(maille *l) {
this->Liste.clear();
}
void ajout(bool s,float p) {
Etiquette e;
e.Saisie(s,p);
this->Liste.push_back(e);
}
};
int main() {
Ensemble ens;
ens.initialiser();
bool s;
float p;
//On considère que s et p ont des valeurs (saisies au clavier, etc)
ens.ajout(s,p);
return 0;
}
Sinon, je ne comprends pas trop ta manière de faire... je ferais plutôt un truc dans le genre :
Code C/C++ :
class Etiquette {
private:
bool solde;
float prix;
public:
void Saisie (bool s,float p) {
this->solde=s;
this->prix=p;
}
};
typedef struct maille {
Etiquette e;
struct maille *suivant;
}
maille;
class Ensemble {
private:
maille *Liste;
public:
void initialiser() {
this->Liste=NULL;//Faire gaffe ici, si ta liste contenait des éléments,
//ils ne seront pas effacés -> risque de fuite mémoire
}
void ajout(bool s,float p) {
maille *etiq=new(maille);
etiq->e.Saisie(s,p);
etiq->suivant=Liste;
Liste=etiq;
}
};
int main() {
Ensemble ens;
ens.initialiser();
bool s;
float p;
//On considère que s et p ont des valeurs (saisies au clavier, etc)
ens.ajout(s,p);
return 0;
}
Le problème avec cette méthode-ci, c'est que l'ordre est inversé (en fait, le membre "suivant" pointe sur l'élément précédent de la liste).
Il y a sans doute des erreurs, je n'ai plus de compilo sous la main. Et tu peux aussi directement intégrer l'équivalent de "maille *suivant" dans la classe Etiquette.
Cordialement, uaip.