Je voudrais utiliser une liste contenant des objets
de type A et B, ou B dérive de A.
class A {
public:
(...)
virtual afficher();
};
class B : public A {
public:
(...)
afficher();
}
Le but étant d'utiliser le polymorphisme,
j'ai donc utilisé une liste de A*
main () {
(...)
list<A*> l;
(...)
for (list<A*>::iterator i=l.begin(); i!=l.end(); i++)
(*i)->afficher();
}
Mon problème c'est que je voudrais trier la liste à la
demande, or :
l.sort();
trie des *pointeurs* et n'utilise pas la relation d'ordre
que j'ai définie dans A (normal).
Je ne peux pas non plus re-définir ">" sur des A*
Alors, mon problème est-il insoluble (je ne souhaite pas
utiliser un autre conteneur que 'list') ???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
"Philip K. Dick" writes:
Mon problème c'est que je voudrais trier la liste à la demande, or : l.sort();
Il y a une version de list<>::sort qui prend un predicat.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
"Philip K. Dick" <philip.k.dick@tele2.fr> writes:
Mon problème c'est que je voudrais trier la liste à la
demande, or :
l.sort();
Il y a une version de list<>::sort qui prend un predicat.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Mon problème c'est que je voudrais trier la liste à la demande, or : l.sort();
Il y a une version de list<>::sort qui prend un predicat.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Sylvain Togni
Philip K. Dick wrote:
Mon problème c'est que je voudrais trier la liste à la demande, or : l.sort(); trie des *pointeurs* et n'utilise pas la relation d'ordre que j'ai définie dans A (normal). Je ne peux pas non plus re-définir ">" sur des A*
std::list a une deuxième fonction (template) sort qui prend en paramètre un prédicat.
-- Sylvain Togni
Philip K. Dick wrote:
Mon problème c'est que je voudrais trier la liste à la
demande, or :
l.sort();
trie des *pointeurs* et n'utilise pas la relation d'ordre
que j'ai définie dans A (normal).
Je ne peux pas non plus re-définir ">" sur des A*
std::list a une deuxième fonction (template) sort qui
prend en paramètre un prédicat.
Mon problème c'est que je voudrais trier la liste à la demande, or : l.sort(); trie des *pointeurs* et n'utilise pas la relation d'ordre que j'ai définie dans A (normal). Je ne peux pas non plus re-définir ">" sur des A*
std::list a une deuxième fonction (template) sort qui prend en paramètre un prédicat.
-- Sylvain Togni
Philip K. Dick
Merci à tous pour vos réponses
Philip K. Dick wrote:
Hello
Je voudrais utiliser une liste contenant des objets de type A et B, ou B dérive de A.
class A { public: (...) virtual afficher(); };
class B : public A { public: (...) afficher(); }
Le but étant d'utiliser le polymorphisme, j'ai donc utilisé une liste de A*
main () { (...) list<A*> l; (...) for (list<A*>::iterator i=l.begin(); i!=l.end(); i++) (*i)->afficher(); }
Mon problème c'est que je voudrais trier la liste à la demande, or : l.sort(); trie des *pointeurs* et n'utilise pas la relation d'ordre que j'ai définie dans A (normal). Je ne peux pas non plus re-définir ">" sur des A*
Alors, mon problème est-il insoluble (je ne souhaite pas utiliser un autre conteneur que 'list') ???
PKD
Merci à tous pour vos réponses
Philip K. Dick wrote:
Hello
Je voudrais utiliser une liste contenant des objets
de type A et B, ou B dérive de A.
class A {
public:
(...)
virtual afficher();
};
class B : public A {
public:
(...)
afficher();
}
Le but étant d'utiliser le polymorphisme,
j'ai donc utilisé une liste de A*
main () {
(...)
list<A*> l;
(...)
for (list<A*>::iterator i=l.begin(); i!=l.end(); i++)
(*i)->afficher();
}
Mon problème c'est que je voudrais trier la liste à la
demande, or :
l.sort();
trie des *pointeurs* et n'utilise pas la relation d'ordre
que j'ai définie dans A (normal).
Je ne peux pas non plus re-définir ">" sur des A*
Alors, mon problème est-il insoluble (je ne souhaite pas
utiliser un autre conteneur que 'list') ???
Je voudrais utiliser une liste contenant des objets de type A et B, ou B dérive de A.
class A { public: (...) virtual afficher(); };
class B : public A { public: (...) afficher(); }
Le but étant d'utiliser le polymorphisme, j'ai donc utilisé une liste de A*
main () { (...) list<A*> l; (...) for (list<A*>::iterator i=l.begin(); i!=l.end(); i++) (*i)->afficher(); }
Mon problème c'est que je voudrais trier la liste à la demande, or : l.sort(); trie des *pointeurs* et n'utilise pas la relation d'ordre que j'ai définie dans A (normal). Je ne peux pas non plus re-définir ">" sur des A*
Alors, mon problème est-il insoluble (je ne souhaite pas utiliser un autre conteneur que 'list') ???