Bonjour à tous,
Voilà mon souci du moment :
J'ai une interface :
Puis qui en hérite une propriété conrête, templarisée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class IProperty { public: virtual std::string ToString() = 0; };
Ce qui me dérange, c'est que lorsque je dois comparer deux "IProperty", je ne peux pas savoir si je peux comparer les types encapsules entre eux ou devoir passer par la conversion en chaîne de caractères...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 template<class T> class CProperty { typedef T value_type; public: virtual std::string ToString(); private: T m_tValue; };
Comment je peux résoudre le problème ? Est-t-il possible de mettre une fonction virtuelle pure qui renvoi non pas une valeur, une référence ou un pointeur mais un type afin de les passer à une structure Trait qui les comparera ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 IProperty& lProperty = CProperty<long>(10); IProperty& strProperty = CProperty<std::string>("10"); lProperty == strProperty; // On passe par les "ToString()", ok IProperty& lProperty2 = 20; lProperty2 == lProperty1; // On passe toujours par les ToString mais j'aimerai passer par la comparaison entre "long" pour gain de perfs
Merci beaucoup,
A bientôt
Partager