3 votes

Blocs Ruby, fermetures java en C++.

Je suis en train de développer un programme dans lequel je me retrouve souvent à faire ce genre de choses :

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 type dans plusieurs objets qui appliquent essentiellement une propriété à tous ses enfants. Venant du monde Ruby, je meurs d'envie de faire quelque chose comme ça :

for_all_bodies{ body->SetCollideMode(m) }

Est-il possible de rendre ce code plus proche des fermetures ou de l'améliorer d'une autre manière ?

Je suis conscient de la façon dont le C++ fonctionne, qu'il est basé sur la pile et qu'il n'y a pas d'informations contextuelles pour créer une fonctionnalité de fermeture parfaite (cela nécessite une VM ?) mais au moins améliorer le type de programmation actuel qui consiste à répéter ce code 100 fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X