
Envoyé par
zougagh
voila la déclaration de S :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class S {
public:
string id;
vector<T*> ter;
int nbt;
vector<F *> fl;
int nbfl;
int nbgr;
vector<G *> grp;
int num;
double RisqueInter;
public:
S(char* i,int n);
virtual ~S();
void addTer(T*);
void addFl(F *);
void addGrp(G *);
friend ostream& operator<<(ostream&, const S& );
}; |
Merci encore une fois de votre rèponse
Merci d'ajouter les balises code (bouton #) pour plus de lisibilité.
Sinon, il semble que ton compilateur interprète:
ser.push_back(new S(*its));//mark
commme
ser.push_back(new S*(*its));//mark
il faut dire qu'il n'y a pas vraiment de méthode définie 
tu a deux solutions: - ou tu définis un constructeur de copie pour S c'est à dire S(const S &)
- ou tu laisse le contructeur par défaut, mais là, les copies de tableau pointeurs se feront sans réallocation.
Dans les deux cas, il faut remplacer
ser.push_back(new S(*its));//mark
par
ser.push_back(new S(**its));//mark
ce qui te permettra de construire S à partir d'un S et non d'un S*.
Bonne chance
Partager