begin process at 2012 05 30 18:34:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Template, pile et affichage !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Template, pile et affichage !

samedi 26 novembre 2005 à 18:27:08 | Template, pile et affichage !

seven333

voici mon fichier de déclaration
#include <iostream.h>
#include <stdlib.h>


template <class T> class Pile
{
    int n_elem;
    int *adresse;
    int nb_element_courant;
   
  public :
       
          Pile(int n); // constructeur I
          Pile(Pile &); // constructeur de recopie III
          ~Pile(); // destructeur
         
          //Opérateurs unaires
          int operator ++();
          int operator --();
         
          //Opérateurs binaires
          Pile & operator =(Pile &); // opérateur d'affectation (=)
          Pile & operator << (T t);
          Pile & operator >> (T &t);
         
          friend ostream& operator << (ostream &,Pile<T> &);
  };

mon fichier de définition

....

template <class T> ostream& operator << (ostream &io,Pile<T> &p)
{
    io << "<* ";
    for(int i=p.nb_element_courant;i>=0;i--)
         io << p.adresse[i] << " ";
    io << " *>";
    return io;
}

et mon main
#include "definition.h"

int main()
{
    Pile <int> pile(5);
   
    pile << 3 << 4 << 1;
   
    cout <<"la pile : "<<pile;
    return 1;
}

Et à la compilation,j'ai une erreur de linkage qui raconte
undefined reference to 'operator << (std: ostream&,Pile<int>)

Merci d'avance pour toute vos idées ;) !


samedi 26 novembre 2005 à 18:36:27 | Re : Template, pile et affichage !

luhtor

Deja, les fichiers include, c'est pas ca:
#include <iostream.h>
#include <stdlib.h>

mais ca:
#include <iostream>
#include <cstdlib>
using namespace std;

Sinon essai de déclarer ta fonction comme ca:
friend template <class U> ostream& operator << (ostream &,Pile<U> &);
samedi 26 novembre 2005 à 19:20:10 | Re : Template, pile et affichage !

seven333

Merci pour ton idée, j'ai donc changé l'en tête du fichier et modifié la déclaration mais ça ne fonctionne toujours pas car du coup il ne reconnait plus le mot clé friend !

J'ai donc conservé que ta première idée, mais toujours le pb de linkage !

samedi 26 novembre 2005 à 20:25:35 | Re : Template, pile et affichage !

luhtor

En fait, faut mettre :
template <class U> friend ostream& operator << (ostream &,Pile<U> &);



samedi 26 novembre 2005 à 20:50:53 | Re : Template, pile et affichage !

seven333

Alors j'ai essayé ta déclaration, il n'y a pas d'erreur de linkge mais une erreur de compilation que je n'ai pas encore vu !

Dans mon fichier déclaration, au moment de template <class T> class Pile, il m'indique "declaration of 'class T' et au niveau de la déclaration de la fonction amie, il me met "shadows template parm 'class t'". Je suis vraiment désolée d'insister mais je ne m'en sors pas avec ces templates !

samedi 26 novembre 2005 à 21:01:35 | Re : Template, pile et affichage !

luhtor

J'ai aucune erreur avec ca:
          Pile & operator >> (T &t);
        
          template <class U> friend ostream& operator << (ostream &,Pile<U> &);
  };


template <class U> ostream& operator << (ostream &io,Pile<U> &p)
{
    io << "<* ";
    for(int i=p.nb_element_courant;i>=0;i--)
         io << p.adresse[i] << " ";
    io << " *>";
    return io;
}



Cette discussion est classée dans : int, template, io, pile, operator


Répondre à ce message

Sujets en rapport avec ce message

un tit coup de pouce pour une pile ??? [ par noisette87 ] voici le debut de mon programme :#include #include #include //---------------------------------------------------------------------------#pragma argsu template [ par payen ] Bonjour,j'ai voulu ecrire un ensemble de fonctions templates, et ca marche pas, pq j'ai plusieurs fonctions qui portent le meme nom et qui sont defini Utilisation de stack en C++ [ par jagdjg ] J essaie de faire un stack mais ca ne marche pas La declaration est : Stack* pile = new Stack();le push : pile->Push(strPile);le pop : strPile = pile- Classe et Piles... [ par Amanobuo ] Bonjours,j'apprend les class et je voudrais pour m'entrainer realiser une implementation statique de type pile grace a une class. Le code est bugé car Prob avec "!" [ par saturne_1606 ] Bonjour a tous!Voila, mon prob est que g créer une classe qui permet de manipuler des ensembles d'entier. Et là, g une fonction membre qui vérifie si Pile et classe template [ par romca ] salut a tous. Voila j'ai fais une "pile" en utilisant une classe "pile template" et j'ai quelques erreurs.1: Quand je rentre des entiers au lieu de ca Overload "[ ]" [ par xenetrix ] //est-ce qu'une personne peut m'assurer la réponse à cette question? //je n'ai pas de compilateur à ma disposition Class Sanity has the structure color32 operator = (color32 A,int X) must be a non-static [ par anykey ] Salut a tous, j'ai un soucis avec les operator c++     color32 operator = (color32 A,int X)     {         color32 ret;         ret.value32= Programmation Orientée Composant (pile) [ par dragarth1 ] Bonjour tout le monde!J'ai un devoir à faire pour l'école, nous devons développer un composant pile qui est ensuite utilisé par tpile, tpile étant le Classe contenant vecteur template [ par val3113 ] Bonjour,Je suis sur un programme cpp sous linux. J'ai créé une classe template "Vecteur" qui est censée pouvoir recevoir plusieurs types dont des clas


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,172 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales