У меня есть следующий код для словаря.
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, он генерирует целую загрузку ошибок.
Есть идеи?
Заранее спасибо.
Не «для iso» (возможно прочитайте все сообщение об ошибке …), но для ISO C ++. Проблема в том, что сфера действия i
переменная только for
цикл (поскольку его определение находится внутри инициализации цикла). Поскольку кажется, что вы хотите использовать его вне цикла, объявите его так:
int i;
for (i = 0; i < foo; i++) {
// ...
}
do_safe_stuff_with(i); // valid
Когда вы делаете, например,
for (int i=0;i<numEntries;i++)
тогда переменная i
является локальным только для цикла, вы не можете использовать его вне цикла.
Если вы хотите использовать i
вне цикла, тогда вам нужно объявить его вне цикла:
int i;
for (i=0;i<numEntries;i++)
i
объявлен в for
условие условия цикла. это не видно на if
пункт после for
петля.
пытаться:
int i = 0;
for (;i<numEntries;i++)
{
if (strcmp(englishWord[i], s)==0)
break;
}
if (i<numEntries)