Possible en double:
In C++ why can’t I write a for() loop like this: for(int i = 1, double i2 = 0; …Pourquoi est-il si «difficile» d'écrire une boucle forcée en C++ avec 2 variables de boucle?
développeur AC écrirait ceci:
int myIndex;
for (myIndex=0;myIndex<10;++myIndex) ...
Un développeur C++ écrira ceci pour empêcher la variable de boucle de fuir à l'extérieur de la boucle:
for (int myIndex=0;myIndex<10;++myIndex) ...
Cependant, si vous avez 2 variables de boucle, vous ne pouvez plus le faire. Ce qui suit ne compile pas:
for (int myIndex=0,MyElement *ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
L'opérateur virgule ne permet pas à deux variables à définir de cette façon, donc nous devons l'écrire comme ceci:
int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
qui contrecarre l'avantage d'avoir vraies variables locales en boucle.
Une solution pourrait être de mettre toute la construction entre accolades, comme ceci:
{
int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
}
Mais cela est à peine plus élégant.
N'y a-t-il pas une meilleure façon de le faire en C++ (ou C++ 0x)?
Pourquoi un programmeur C mettre nécessairement la variable au-dessus de la boucle? – GManNickG
@GMan La déclaration à l'intérieur de l'instruction for n'est valide que depuis C99, IIRC – Wim
@Wim: Qui était il y a 11 ans. :) – GManNickG