Возможный дубликат:
Можно ли объявить две переменные разных типов в цикле for?
Рассмотрим этот код:
for( std::vector<std::string>::iterator it = myVec.begin(), int i = 3; it < myVec.end(); it++, i++ )
{
// some operations with the vector
}
Я очень удивился, что MSVC 2010 дал мне ошибки при компиляции цикла for.
Использование оператора запятой запрещено MSVS?
Вот ошибка:
error C2062: type 'int' unexpected
error C2143: syntax error: missing ';' before ')'
Если я попытаюсь вытолкнуть определение «int i» из цикла, я получу:
error C2440: 'initializing': cannot convert from 'int' to 'std::vector'
оператор запятой должно быть два выражения как операнды. На правой стороне у вас есть int i=0
который выглядит как декларация, не выражение.
Если вы удалите это int
Вы объявляете std::vector<std::string>::iterator
переменная с именем i
и назначая или конструируя его с 3
который не проверяет тип.
На практике переместите int i=3;
объявление до (и из) вашего for
петля.
Вы не можете иметь объявление для двух разных типов данных в цикле for, поэтому вам нужно поместить вектор или i в цикл, но вы можете присвоить значения