可能重复:
Is it possible to declare two variables of different types in a for loop?
考虑以下代码:
for( std::vector<std::string>::iterator it = myVec.begin(), int i = 3; it < myVec.end(); it++, i++ )
{
// some operations with the vector
}
我很惊讶MSVC 2010给了我编译循环的错误。 是否使用MSVS禁止的逗号运算符?
这是一个错误:
error C2062: type 'int' unexpected
error C2143: syntax error: missing ';' before ')'
如果我试图推动&#34; int i&#34;定义出循环,我得到:
error C2440: 'initializing': cannot convert from 'int' to 'std::vector'
答案 0 :(得分:7)
comma operator应该有两个表达式作为操作数。在其右侧,您有int i=0
,它看起来像声明,而不是表达式。
如果删除int
,则表示名为std::vector<std::string>::iterator
的{{1}}变量,并使用i
分配或构建变量,但不进行类型检查。
在实践中,在3
循环之前(和之外)移动int i=3;
声明。
答案 1 :(得分:0)
你不能在for循环中声明两种不同的数据类型,所以你需要在循环内推送vector或i,但你可以赋值