Forum Programmation.c++ instantiated from?

Posté par  .
Étiquettes : aucune
0
14
jan.
2005
salut a tous ,je suis en train d'ecrire un prog qui utilise un stack dynamique parametrique(class template) .lorsque j'essay d'utiliser la fonction push qui inserre un element le compilateur releve l'erreur:
instantiated from `stack::push(int)'
template <typename T>
void
stack::push(T value){
if(top==capacity){
T *loc_pointer=newcopy(pointer,capacity,capacity*2);
capacity=capacity*2;
top++;
try{
loc_pointer[top++]=value;
delete []pointer;
pointer=loc_pointer;

}
catch(...){
delete []loc_pointer;
capacity=capacity/2;
top--;
throw;}

}
else {
top++;
pointer[top++]=value;
}

}

je voudrais savoir c'est quoi au juste cet erreur?
en attendant une reponse je vous remerci
  • # c'est pas la bonne ligne

    Posté par  (site web personnel) . Évalué à 2.

    Le message que tu vois s'étalle sur plusieurs lignes. L'important, c'est le "instanciated from here" a la fin, et celle qui suit.

    (au fait, tu sais que la classe que tu écris ressemble très fort a std::vector ?)
    • [^] # Re: c'est pas la bonne ligne

      Posté par  . Évalué à 1.

      en effet j'avais precisè que c'etait la classe d'un stack dynamique ,je sais que je suis pas obligèe de l'ecrire mais je le fais car le but c'est de la reecrire et d'essayer d'ameliorer le style d'ecriture le plus possible .
      le probleme est quand j'utilise cette fonction ds le main .
      je sais que :instantiate veut dire que le compilateur realise une version de la classe templatique relativement a un type precis ,mais je sais pas comment corriger l'erreur?
      doi-je specifier lors de la declaration des objets stack le mot clè :template ????

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.