Salut à tous,
je suis en train d'essayer d'implémenter un arbre binaire en C++ avec la POO mais je me heurte à un problème. Mon implémentation utilisant des templates pour être "universelle" il me faut savoir si le type passé en paramètre est comparable avec les opérateur <
et >
pour mettre le nœud au bon endroit.
Voici mon code pour l'instant:
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 59 60 | /* Implementation of binary search tree in cpp template */ #ifndef __BST_HPP__ #define __BST_HPP__ #include <memory> template<class T_data> class Bst { T_data d_data; std::auto_ptr<Bst<T_data>> d_left; std::auto_ptr<Bst<T_data>> d_right; public: Bst(T_data data) : d_data(data), d_left(nullptr), d_right(nullptr) { } //! Copy constructor Bst(const Bst &other) : d_data(other.data()) { } //! Move constructor Bst(Bst &&other) noexcept; ~Bst() noexcept = default; //! Copy assignment operator Bst& operator=(const Bst &other); //! Move assignment operator Bst& operator=(Bst &&other) noexcept; T_data const &data() const { return d_data; } }; #endif // __BST_HPP__ |
Ma question est donc comment savoir si 2 objet sont comparable ou non.
Je vous remercie d'avance de votre aide
+0
-0