Donc je veux trier un tableau dans la classe mère de l'enfant en utilisant un foncteur d'objet. La classe mère est générique.Tri d'un tableau avec un foncteur personnalisé en C++ où la classe mère est générique
template<typename T>
class MotherClass
{
public:
/* some code */
std::list<T*> getList();
private:
std::list<T*> list_;
}
La classe enfant utilise une autre classe comme modèle
class OtherClass
{
public:
/* some code */
std::string getName() const;
private:
std::string name_;
}
Voici la classe foncteur
class Functor
{
public:
/* some code */
bool operator() (OtherClass* a, OtherClass* b) const
{
return a->getName() < b->getName();
}
}
Enfin, voici la classe enfant
class ChildClass : public MotherClass<OtherClass>
{
public:
/* some code */
friend std::ostream& operator<<(std::ostream& o, const ChildClass& child);
}
std::ostream& operator<<(std::ostream& o, const ChildClass& child)
{
Functor functor;
std::sort(child.getList().begin(), child.getList().end(), functor);
/* some code */
}
Quand je commenter la ligne de tri the ChildClass, la solution construite sans aucun problème. Bien que, quand il est là, cette erreur arrive.
erreur C2784: 'std-type inconnu :: operator - (std :: move_iterator < _RanIt> &, const std :: move_iterator < _RanIt2> &)': ne peut pas déduire un argument de modèle pour « std :: move_iterator < _RanIt> & 'de 'std :: _ List_unchecked_iterator >>'
Tout le monde peut aider?
Veuillez fournir un [mcve]. Je ne comprends pas votre code. par exemple. dans 'l'opérateur <<' vous triez la liste'child's, mais le paramètre 'child' est' const' – user463035818
votre 'child.getList()' retourne une valeur, donc 'child.getList(). begin() 'et child.getList(). end()' sont des itérateurs de deux conteneurs différents – user463035818
Fournissez-vous le premier message d'erreur ou le dernier message d'erreur? Le premier est plus important. – aschepler