Bonjour à tous,

J'ai un problème lors de la compilation de mon code, j'ai comme erreur :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
Erreur	1	error LNK2019: symbole externe non résolu "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Calcul<int> const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABV?$Calcul@H@@@Z) référencé dans la fonction _main	c:\Users\Nicolas\documents\visual studio 2012\Projects\POO2012\POO2012_correction_ex2\Main.obj	POO2012_correction_ex2
Voici mes deux fichiers :

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#pragma once
#include <iostream>
 
using namespace std;
 
template <class T>
class Calcul {
private :
	T val;
	static int valDefaut;
 
public :
 
	Calcul(const Calcul& c);
	Calcul(T v = valDefaut);
	Calcul Nplus(T n) const;
	Calcul& plus(T n);
	T valeur() const;
	friend ostream& operator<<(ostream& os, const Calcul& calcul);
};
 
template <class T>
int Calcul<T>::valDefaut = 0;
 
template <class T>
ostream& operator<<(ostream& os, const Calcul<T>& calcul){
	os << calcul.val;
	return os;
}
 
template <class T>
Calcul<T>::Calcul(const Calcul& c){
	val = c.valeur();
	cout << "Constructeur Calcul(Calcul&)" << endl;
}
 
template <class T>
Calcul<T>::Calcul(T v){
	val = v;
	cout << "Constructeur Calcul(T)" << endl;
}
 
template <class T>
Calcul<T> Calcul<T>::Nplus(T n) const{
	Calcul<T> tmp(n + valeur());
	return tmp;
}
 
template <class T>
Calcul<T>& Calcul<T>::plus(T n){
	val += n;
	return (*this);
}
 
template <class T>
inline T Calcul<T>::valeur() const{
	return val;
}
Calcul.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 "Calcul.h"
 
int main(int argc, char* argv[]){
 
	Calcul<int> a;
	Calcul<int> t;
 
	cout << "a: " << a << endl;
	cout << "t: " << t << endl << endl;
 
	a = t.plus(1).plus(1);
	cout << "a: " << a << endl;
	cout << "t: " << t << endl << endl;
 
	a = t.Nplus(1).Nplus(1);
	cout << "a: " << a << endl;
	cout << "t: " << t << endl << endl;
 
	a = t.plus(1).Nplus(1);
	cout << "a: " << a << endl;
	cout << "t: " << t << endl << endl;
 
	system("pause");
	return 0;
}
Main.cpp

Merci beaucoup de votre aide.