Bonjour,
Voila lorsque je compile mon projet j'ai l'erreur suivante:
Je vois bien que c'est des problèmes dû aux liens de bibliothèque mais je ne vois vraiment pas ou . Voici le main et les .h concernés:1> main.cpp
1>main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall File<class Assiette>::~File<class Assiette>(void)" (??1?$File@VAssiette@@@@UAE@XZ)
1>main.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall ErreurFile<class Assiette>::verdict(class std::basic_ostream<char,struct std::char_traits<char> > &)const " (?verdict@?$ErreurFile@VAssiette@@@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z)
1>main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall ErreurFile<class Assiette>::~ErreurFile<class Assiette>(void)" (??1?$ErreurFile@VAssiette@@@@UAE@XZ)
1>main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall ErreurFilePleine<class Assiette>::~ErreurFilePleine<class Assiette>(void)" (??1?$ErreurFilePleine@VAssiette@@@@UAE@XZ)
1>main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall FileBornee<class Assiette,2>::~FileBornee<class Assiette,2>(void)" (??1?$FileBornee@VAssiette@@$01@@UAE@XZ)
1>main.obj : error LNK2001: unresolved external symbol "public: __thiscall FileBornee<class Assiette,2>::FileBornee<class Assiette,2>(void)" (??0?$FileBornee@VAssiette@@$01@@QAE@XZ)
1>C:\Users\Scary\Documents\Visual Studio 2010\Projects\File\Release\File.exe : fatal error LNK1120: 6 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
main.cpp
File.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include "Assiette.h" #include "FileBornee.h" #include "ErreurFilePleine.h" int main () { try { FileBornee<Assiette, 2> f; f.ajoute (Assiette ()); f.ajoute (Assiette ()); f.ajoute (Assiette ()); } catch (ErreurFilePleine<Assiette> e) { e.verdict (std::cout); } catch (ErreurFile<Assiette> e) { e.verdict (std::cout); } return 0; }
FileBornee.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #ifndef FILE_H #define FILE_H #include <vector> #include <iostream> template<typename T> class File { protected: std::vector<T> listElements; public: File (); virtual ~File (); virtual void ajoute (T t); virtual T retire () throw (...); // exception ErreurFileVide<T> virtual int nbElement () const; virtual bool estVide () const; virtual T consulte () throw (...); // exception ErreurFileVide<T> }; #endif
ErreurFile.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #ifndef FILEBORNEE_H #define FILEBORNEE_H #include "File.h" template<typename T, const int taille> class FileBornee : public virtual File<T> { public: FileBornee (); virtual ~FileBornee (); virtual void ajoute (T t) throw (...); // exception ErreurFilePleine<T> virtual void transvaser (FileBornee<T,taille> *f) throw (...); // exception ErreurFile<T> virtual int capacite () const; }; template<typename T1, const int t1, typename T2, const int t2> void transvaser (FileBornee<T1, t1> *f1, FileBornee<T2, t2> *f2) throw (...) // exception ErreurFile<T1> { if ((void*)f2 == (void*)f1) { throw ErreurFile<T1> ("en transvasant file dans elle meme"); } int i = 0; while (f2->nbElement () > 0) { if (dynamic_cast<T1> (f2->consulte ()) == NULL) { throw ErreurFileBadElement (); } f1->ajoute (dynamic_cast<T1> (f2->retire ())); } } #endif
ErreurFilePleine.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #ifndef ERREURFILE_H #define ERREURFILE_H #include <exception> #include <string> template<typename T> class ErreurFile : public virtual std::exception { private: std::string contexteErreur; public: ErreurFile (); ErreurFile (std::string contexte); virtual ~ErreurFile () throw (); virtual void verdict (std::ostream& os) const; }; #endif
Assiette.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #ifndef ERREURFILEPLEINE_H #define ERREURFILEPLEINE_H #include "ErreurFile.h" template<typename T> class ErreurFilePleine : public virtual ErreurFile<T> { public: ErreurFilePleine (); ErreurFilePleine (std::string contexte); virtual ~ErreurFilePleine () throw (); }; #endif
Voila si quelqu'un arrive à voir ce qui cloche. Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #ifndef ASSIETTE_H #define ASSIETTE_H class Assiette { public: Assiette (); virtual ~Assiette (); }; #endif
Partager