J'essaye de créer un Set en utilisant la librairie LEDA ... J'ajoute des éléments d'une classe qui a une méthode compare()
définie sous l'espace de noms LEDA ... Malheureusement, le compilateur est incapable de localiser le fonction de comparaison pour cette classe ... Voilà le message d'erreur ...Comparaison C++ avec la librairie LEDA
/home/user/Desktop/leda/incl/LEDA/core/set.h:
In constructor ‘leda::set<E, set_impl>::set() [with E = Operator*, set_impl = leda::avl_tree]’:
../src/suite.cc:52: instantiated from here /home/user/Desktop/leda/incl/LEDA/core/set.h:71: error: no matches converting function ‘compare’ to type ‘int (*)(class Operator* const&, class Operator* const&)’
/home/user/Desktop/leda/incl/LEDA/internal/param_types.h:351: error: candidates are: int leda::compare(const char&, const char&)
/home/user/Desktop/leda/incl/LEDA/internal/param_types.h:352: error: int leda::compare(const unsigned char&, const unsigned char&)
/home/user/Desktop/leda/incl/LEDA/internal/param_types.h:353: error: int leda::compare(const int&, const int&)
/home/user/Desktop/leda/incl/LEDA/internal/param_types.h:354: error: int leda::compare(const unsigned int&, const unsigned int&)
/home/user/Desktop/leda/incl/LEDA/internal/param_types.h:355: error: int leda::compare(const long int&, const long int&)
/home/user/Desktop/leda/incl/LEDA/internal/param_types.h:356: error: int leda::compare(const long unsigned int&, const long unsigned int&)
/home/user/Desktop/leda/incl/LEDA/internal/param_types.h:357: error: int leda::compare(const float&, const float&)
/home/user/Desktop/leda/incl/LEDA/internal/param_types.h:358: error: int leda::compare(const double&, const double&)
/home/user/Desktop/leda/incl/LEDA/core/string.h:382: error: int leda::compare(const leda::string&, const leda::string&)
LEDA nécessite la méthode compare()
être définie pour les éléments d'un set
.
Suite::Suite (set<Operator*> *ops)
: operators(ops!=NULL ? ops : new set<Operator*>)
{
J'ai cette comparaison méthode définie en fonction des besoins LEDA ...
namespace leda {
inline int compare (Operator* const &a, Operator* const &b)
{
return a==b ? 0 : a<b ? -1 : 1;
}
};
Mais il ne peut toujours pas trouver dans set.h Leda librabry ici ..
set() { cmp_ptr = compare; }
Il essaie de trouver le pointeur vers la méthode compare()
et l'affecte à cmp_ptr
... mais ne le trouve pas ...
J'ai défini la méthode mais elle n'est pas reconnue?
Mise à jour: Je semblent avoir ce problème avec toutes les définitions compare()
.... y compris d'autres classes dans les ensembles ..
Veuillez essayer de rendre ce message d'erreur légèrement lisible. Rompez-le donc vous avez une erreur par ligne et utilisez le formatage du code – jalf
désolé ... le formatage maintenant ... – badkya
s'il vous plaît ajouter le code qui provoque l'erreur. – Goz