функция — C ++ Поиск я изменил для ISO

У меня есть следующий код для словаря.

void Dictionary::translate(char out_s[], const char s[])
{

for (int i=0;i<numEntries;i++)
{
if (strcmp(englishWord[i], s)==0)
break;
}
if (i<numEntries)
strcpy(out_s, elvishWord[i]);

что дает мне ошибку name lookup of i changed for iso и упоминает, что код будет принят, если я использую -fpermissive, Если я попытаюсь инициализировать переменную вне цикла for, он генерирует целую загрузку ошибок.

Есть идеи?

Заранее спасибо.

1

Решение

Не «для iso» (возможно прочитайте все сообщение об ошибке …), но для ISO C ++. Проблема в том, что сфера действия i переменная только for цикл (поскольку его определение находится внутри инициализации цикла). Поскольку кажется, что вы хотите использовать его вне цикла, объявите его так:

int i;
for (i = 0; i < foo; i++) {
// ...
}

do_safe_stuff_with(i); // valid
3

Другие решения

Когда вы делаете, например,

for (int i=0;i<numEntries;i++)

тогда переменная i является локальным только для цикла, вы не можете использовать его вне цикла.

Если вы хотите использовать i вне цикла, тогда вам нужно объявить его вне цикла:

int i;
for (i=0;i<numEntries;i++)
2

i объявлен в for условие условия цикла. это не видно на if пункт после for петля.

пытаться:

int i = 0;
for (;i<numEntries;i++)
{
if (strcmp(englishWord[i], s)==0)
break;
}
if (i<numEntries)
1
По вопросам рекламы [email protected]