Question 1 :
En fait, j'ai regardé du côté de std::mem_fun, mais je n'ai pas trouvé
la manière de pouvoir utiliser std::for_each, pour que chaque élément
puisse être envoyé dans le flux XML.
Ce qui est plus simple c'est le code suivant :
Peoples::const_iterator it = peoples.begin();
Peoples::const_iterator ending = peoples.end();
for (; it != ending; ++it) {
(*it)->toXml (xmlWriter);
}
mais ce code ne me plait pas :'(
Est-ce quelqu'un aurait une idée pour m'améliorer ?
Si une solution existe, aurait-on la possibilité de m'expliquer la
solution pour une meilleure compréhension ?
mais ce code ne me plait pas :'( Est-ce quelqu'un aurait une idée pour m'améliorer ? Si une solution existe, aurait-on la possibilité de m'expliquer la solution pour une meilleure compréhension ?
Si PeoplePtr était un (People *), alors on pourrait écrire: std::for_each( peoples.begin(), peoples.end(), std::bind2nd( std::mem_fun( &People::toXml ), xmlWriter ) );
Mais avec un boost::shared_ptr, ça ne fonctionne pas. A ce moment-là j'utiliserais plutôt:
mais ce code ne me plait pas :'(
Est-ce quelqu'un aurait une idée pour m'améliorer ?
Si une solution existe, aurait-on la possibilité de m'expliquer la
solution pour une meilleure compréhension ?
Si PeoplePtr était un (People *), alors on pourrait écrire:
std::for_each(
peoples.begin(),
peoples.end(),
std::bind2nd( std::mem_fun( &People::toXml ), xmlWriter ) );
Mais avec un boost::shared_ptr, ça ne fonctionne pas. A ce moment-là
j'utiliserais plutôt:
mais ce code ne me plait pas :'( Est-ce quelqu'un aurait une idée pour m'améliorer ? Si une solution existe, aurait-on la possibilité de m'expliquer la solution pour une meilleure compréhension ?
Si PeoplePtr était un (People *), alors on pourrait écrire: std::for_each( peoples.begin(), peoples.end(), std::bind2nd( std::mem_fun( &People::toXml ), xmlWriter ) );
Mais avec un boost::shared_ptr, ça ne fonctionne pas. A ce moment-là j'utiliserais plutôt: