Bonjour

Est ce qu'il est possible d'utiliser les templates dans l'operateur pour assurer que l'objet passe est bien construit avec le type voulu et pour permettre de surcharge la fonction?

Par example:
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
 
class duree // classe englobant l heure les minute et les seconde
{
public:
	duree(){ val = 2; }
	int val;
};
 
class date // classe englobant les anne, les mois, les jour, les heure, les minutes, les seconeds 
{
public:
	date(){ val = 3; }
	int val;
};
 
template <class T>
class _clock
{
public:
	T temps;
	void print()
	{
		std::cout << temps.val << std::endl;
	}
 
	template <class T>	friend _clock  operator + (const _clock<date> &c1, const _clock<duree> &c2)
	{
		_clock ret;
		return ret;
	}
	friend _clock<date> operator - (const _clock<date> &c1, const _clock<duree> &c2)
	{
		_clock ret;
		return ret;
	}
};
ne compile pas...
Le but est de pouvoir faire comme ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
_clock<date> d1;
_clock<date> d2;
_clock<duree> d3;
 
std::cout << "Temps entre les 2 dates: " << d1 - d2 << std::endl;
std::cout << "Temp  enleve a d1: " << d1 - d3 << std::endl;
Je ne sais pas si c'est une bonne idee de faire une difference entre la date et la duree