Bonjour
J'ai un problème lors du développement d'une classe j'ai eu à surchargé l'opérateur '==' mais je voudrais surchargé de manière différence si je suis face à un float, double ou long double :
voici ma classe
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
template <class T>
class A
{
T x;
bool operator==(const A<T>&) const;
};
 
template <class T>
bool A<T>::operator==(const A<T>& a) const
{
	return a.x == x;
}
 
template <>
bool A<float>::operator==(const A<float>& a) const
{
	return std::abs(a.x - x) <= std::numeric_limits<float>::epsilon();
}
 
typedef A<int> iA;
typedef A<unsigned int> uiA;
typedef A<short> sA;
typedef A<long> lA;
typedef A<float> fA;
typedef A<double> dA;
typedef A<long double> ldA;
Comme vous le voyez à cause des typedef j'ai une multiple définition. Est-ce que vous voyez une solution tout en bénificiant des avantages de la "généricité". Merci