Je développe un programme où je me trouve faire cela apprecier:blocs Ruby, les fermetures de Java en C++
void Model::SetCollideMode(const std::string &m)
{
Body *body;
std::map<std::string, Body* >::iterator iter;
for (iter=this->bodies.begin(); iter!=this->bodies.end(); iter++)
{
body = iter->second;
body->SetCollideMode(m);
}
}
J'ai plusieurs méthodes de ce genre dans plusieurs objet qui appliquent essentiellement une propriété à tous ses enfants. En venant de monde Ruby Je suis en train de mourir à faire quelque chose comme:
for_all_bodies{ body->SetCollideMode(m) }
Il y a de toute façon de rendre ce code plus ou fermetures comme dans d'autres d'améliorer comme il? Je suis conscient de comment C++ fonctionne, qu'il est basé sur la pile et il n'y a aucune information de contexte pour créer une fermeture parfaite comme la fonctionnalité (ceci a besoin d'une VM?) Mais au moins s'améliore au cours de répéter ce code 100 fois gentil de programmation.
BOOST_FOREACH est une macro. Cette virgule dans le type de paire rendra le compilateur fou. – Ferruccio
Bon point. Fixe :) – jalf
Je pense que boost_foreach est la plus utilisable des solutions ... – Jordi