Bonjour à tous,
J'ai un problème lors de la compilation de mon code, j'ai comme erreur :
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 :
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
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.
Partager