1

辞書には次のコードがあります。

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ループの外で変数を初期化しようとすると、大量のエラーが発生します。

何か案は?

前もって感謝します。

4

3 に答える 3

3

「ISO用」ではなく(おそらくエラーメッセージ全体を読んでください...)、ISO C ++用です。問題は、i変数のスコープがループのみであることですfor(変数の定義はループの初期化内にあるため)。ループの外で使いたいらしいので、次のように宣言します。

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

do_safe_stuff_with(i); // valid
于 2013-05-09T18:51:24.763 に答える
2

あなたがするとき、例えば

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

変数iはループに対してのみローカルであり、実際にはループの外では使用できません。

ループの外側で使用する場合はi、ループの外側で宣言する必要があります。

int i;
for (i=0;i<numEntries;i++)
于 2013-05-09T18:50:07.953 に答える