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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Templace c++ ==> URGENT svp


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

Templace c++ ==> URGENT svp

mardi 28 février 2006 à 13:15:42 | Templace c++ ==> URGENT svp

najla1986

bonjour, j'ai un dossier a rendre pour mes cours et j'ai un soucis concernant l'utilisation de mes template. c'est donc a l'appel des methode du template que j'obtien des erreur de link
 voici mon code :

Classe Template

#include <iostream>
template<class T>
class Vecteur
{
    protected:
               T *data;
               int nbElem;
               int *index;
    public:
               Vecteur();
               Vecteur(int n);
               ~Vecteur(void){delete data;delete index;}
               T& operator[](int i){return *(data+i);}
               void setElement(T& elm);
               void deleteElement(int num);
               void affichevect(void);
               void getIndex(void);
               int getnbElem(){return nbElem};
};

template<class T>
class VecteurTrie:public Vecteur<T>
{
        //friend ostream& operator<<(ostream& m,const VecteurTrie<T>& t);
       private:
                T *tmp;
       public:
                   VecteurTrie();
                   VecteurTrie(int n);         
                ~VecteurTrie(void){delete tmp;}
                VecteurTrie& operator=(const VecteurTrie<T>& vect);
                void Tri(void);
                 
                  //friend ostream& operator<<(ostream& m,VecteurTrie<T> & t);
};

#endif


Classe AdresseEMail

#include<string>
#include<fstream>
#include <iostream>
using namespace std;
#include<stdlib.h>

class InvalidMailAdressException{};

class AdresseEMail
{
...
    private:
        static unsigned int num;
        string identifiant;
        string provider;
        int compS(AdresseEMail aem);       
        filebuf    fichier;
        char    nomFichier[20];
        int CheckFormatEMail(string adr);
    public:
        AdresseEMail();
        AdresseEMail(string ide,string pro);
        AdresseEMail(const AdresseEMail &aem);
        ~AdresseEMail();

        string getIdentifiant() const {return identifiant; }
        string getProvider() const {return provider; }   

        void setIdentifiant(const string ide) {identifiant = ide; }
        void setProvider(const string pro) {provider = pro; }
        void setEMail(string&);
...
};
#endif


Classe Message
class message
{
    private:
        unsigned int numero;
        AdresseEMail * expediteur;
        VecteurTrie<AdresseEMail> destinataire;
        bool urgent;                  // 1 urgent, 0 pas urgent
        bool statut;                  // 1 lu, 0 pas lu
        string sujet;
        string texte;
        int NbDest;   

    public:
        message ();
        message(const message &);
        ~message ();

        //APPEL DES FONCTIONS SET
        void setExpediteur(string& e);
        void setDestinataire(string& d);
        void setUrgent(bool u);
        void setStatut(bool s){statut=s;}
        void setSujet (string s);
        void setTexte(string t){texte=t;}
        void setNbDest(int n){NbDest=n;}       
        //COMPOSITION MESSAGE
        void compExpediteur();
        void compDestinataire();
        void composer();
...
};


Voici les codes de mes deux méthodes de la classe Message posant le problème

void message::setDestinataire(string & d)
{
    AdresseEMail ad;
    ad.setEMail(d);
      //destinataire.setElement(ad);                        // POSE PROBLEME !!!! //
}

void message::affiche()
{
    cout << endl<< "Message" << getNumero();    

    if (getUrgent()==0)
        cout << " Non-Urgent" << endl<< endl;
    else
        cout << " Urgent" << endl<< endl;

    cout << "Expediteur : "  << expediteur->toString() << endl;
    cout << endl << "Destinataire : ";
    //destinataire.affichevect();                        // POSE PROBLEME !!!! //

    cout << endl << "Sujet : " << getSujet() << endl << getTexte();    
    
    cout << endl << endl << "Statut du message : " ;
    if (getStatut()==0)
        cout << " Non Lu" << endl<< endl;
    else
        cout << " Lu" << endl<< endl;
}

Voici les message d'erreur :

Linking...
Message.obj : error LNK2019: unresolved external symbol "public: void __thiscall Vecteur<class AdresseEMail>::setElement(class AdresseEMail &)" (?setElement@?$Vecteur@VAdresseEMail@@@@QAEXAAVAdresseEMail@@@Z) referenced in function "public: void __thiscall message::setDestinataire(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (?setDestinataire@message@@QAEXAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

Message.obj : error LNK2019: unresolved external symbol "public: void __thiscall Vecteur<class AdresseEMail>::affichevect(void)" (?affichevect@?$Vecteur@VAdresseEMail@@@@QAEXXZ) referenced in function "public: void __thiscall message::affiche(void)" (?affiche@message@@QAEXXZ)

C:\Documents and Settings\***\Mes documents\Cours\C++\Dossier\InpresMail\Debug\InpresMail.exe : fatal error LNK1120: 2 unresolved externals



 Dans le code de mon fichier Vecteur.cpp pour le templace j'ai ajouté a la fin du fichier l'instruction :

template class VecteurTrie <AdresseEMail>;




Merci pour votre réponse
mardi 28 février 2006 à 14:30:54 | Re : Templace c++ ==> URGENT svp

vecchio56

Administrateur CodeS-SourceS
Pour les classes templates, tu dois écrire l'implémentation dans les fichiers .h, ca vient peut être de la
mardi 28 février 2006 à 15:01:06 | Re : Templace c++ ==> URGENT svp

najla1986

bien vu... ca a résolu mon problème de link merci beaucoup !!

j'aurai une autre question, je dois sauvegarder cette classe message dans un fichier, quelqu'un aurait une technique pour le template ? car je recherche comment sauvegarde un classe contenant un template mais je ne trouve pas.. cela se fait-il automatiquement comme un tableau ? merci pour vos réponses


Cette discussion est classée dans : message, int, string, void, adresseemail


Répondre à ce message

Sujets en rapport avec ce message

Fonctions Imbriquées avec argument string [ par Zakata ] Bonjours,J'esaye de programmer deux classes de menu. L'architecture est la suivantes : Une classe Menuclass Menu{public:    Menu(void);    ~Menu(void) multi heritage [ par foxz ] Bonjour,d'une maniere general.class strm{ // base stream virtual int w(void*,int)=0; // write virtual int r(void*,int)=0; //read};class fil:virtual pu Problème d'affichage de variables [ par Ilmen_ ] Voila, j'ai un problème avec mon code, j'ai mis les erreurs signalés par le compilateur en rouge et sur les lignes correspondantes. Je ne sus pas non Une méthode virtuelle appelée depuis un destructeur n'est pas héritée!? [ par Forman ] Bonjour(soir) à tous,je viens de me mettre au C++ et à GLUT et je bute sur un problème que je n'arrive pas à m'expliquer. D'abord, voilà le code en qu Comment faire pour qu'un string soit egal a un int? en c++ [ par ndubien ] Salut, Comment faire pour qu'un string soit egal a un int? (en c++)int nombre(1);Je veux que :string a soit egal a "mot1" + nombre + "mo error C2143 [ par IH2MCBETA ] 1>c:\users\richard\documents\visual studio 2005\ih2mc\parameters.h(15) : error C2143: erreur de syntaxe : absence de ';' avant '*'1>c:\users\richard\d jeux d'échec qui nous met en échec!! [ par shinohinata01 ] Bonjour,nous rencontrons actuellement un problème sur un de nos programmes qui traite d'un jeux d'échec.en gros nous avons une fonction dans une class String en int [ par drcmomo ] Bonjour!!Je suis entrain de faire une interface graphique, dans ma textBox mes données sont type String j'aimerais bien s'avoir commentfaire pour pass recherche aide SVP [ par gelloula ] J 'ai un projet à faire en borlandc en mode BGI, Je suis encore une debutante et je bloque là dessus depuis une semaine. Dessiner un pixel sur le bureau [ par debutant VB ] Bonjour tout le monde.Je débute en C++, et j'ai un petit problème :J'ai fait un petit programme qui devrai dessiner un point rouge sur le bureaumais ç


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,905 sec (3)

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