可能重复:
在C++中为什么我不能像这样编写for()循环:for(int i = 1,double i2 = 0; ...
AC开发人员会这样写:
int myIndex;
for (myIndex=0;myIndex<10;++myIndex) ...
Run Code Online (Sandbox Code Playgroud)
C++开发人员会编写这个来防止循环变量泄漏到循环外:
for (int myIndex=0;myIndex<10;++myIndex) ...
Run Code Online (Sandbox Code Playgroud)
但是,如果您有2个循环变量,则不能再执行此操作.以下内容无法编译:
for (int myIndex=0,MyElement *ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
Run Code Online (Sandbox Code Playgroud)
逗号运算符不允许以这种方式定义两个变量,因此我们必须这样写:
int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
Run Code Online (Sandbox Code Playgroud)
这打破了拥有真正的循环局部变量的优势.
一个解决方案可能是将整个结构放在大括号之间,如下所示:
{
int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
}
Run Code Online (Sandbox Code Playgroud)
但这并不是更优雅.
在C++(或C++ 0x)中有没有更好的方法呢?