Bonjour,

Voila lorsque je compile mon projet j'ai l'erreur suivante:

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 ==========
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:

main.cpp
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;
}
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
#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
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
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
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
#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
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
#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
Assiette.h
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
Voila si quelqu'un arrive à voir ce qui cloche. Merci d'avance