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
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
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 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 ;
Merci pour votre réponse
Afficher la suite