Bonjour,
Je suis en train d'écrire un petit programme qui (entre autres) utilisent deux classes.
J'ai besoin d'un attribut dans Franchise pour contenir tous les Films :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Film { private : int ordreSortie; } class Franchise { private : conteneur<Film*> films; }
- Je veux que les Films soient ordonnées en fonction de leur attribut ordreSortie -> Donc pas de std::vector
- Je n'ai pas besoin d'accéder aux films autrement que séquentiellement (parcourir tous les films dans l'ordre) -> Donc pas besoin de std::map
Donc je suis parti pour utiliser un std::set
J'aimerais ne pas surcharger l'opérateur < parce que conceptuellement, j'ai envie de les hiérarchiser d'une autre manière. C'est uniquement dans ce std::set que l'ordre de sortie sert à les classer.
Du coup, je voulais utiliser une sorte de lambda expression comme comparateur :
J'ai trouvé plusieurs résultats sur Internet (https://stackoverflow.com/questions/...set-comparator) du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part set<Film*, [](Film* f1, Film* f2){return f1->getOrder() < f2->getOrdre();}>
Le problème, c'est que je ne vois pas comment le faire marcher dans la définition de ma classe (franchise.h).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 auto cmp = [](Film* a, Film* b) { return ... }; std::set<int, decltype(cmp)> s(cmp);
Est ce que c'est possible ?
Merci d'avance !
Partager