Возможный дубликат:
In C++ why can’t I write a for() loop like this: for( int i = 1, double i2 = 0; …
Разработчик C C написал бы это:
int myIndex;
for (myIndex=0;myIndex<10;++myIndex) ...
Разработчик С++ написал бы это, чтобы предотвратить переполнение переменной цикла за пределами цикла:
for (int myIndex=0;myIndex<10;++myIndex) ...
Однако, если у вас есть 2 переменные цикла, вы больше не сможете этого делать. Не компилируется следующее:
for (int myIndex=0,MyElement *ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
Оператор запятой не позволяет определить две переменные таким образом, поэтому мы должны записать это следующим образом:
int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
Побеждает преимущество наличия реальных локальных переменных цикла.
Решение может заключаться в том, чтобы поместить всю конструкцию между фигурными скобками, например:
{
int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
}
Но это вряд ли более элегантно.
Нет ли лучшего способа сделать это в С++ (или С++ 0x)?