2

したがって、上記のエラー (タイトル) が表示されますが、何らかの理由で 2 番目のループでのみこのエラーがスローされます。customer 変数を使用した 1 番目と 2 番目のループはまったく問題なく動作し、エラーがスローされることも何もないことに注意してください。しかし、最後のループである output[customer][charge] 配列では、output[customer] の下に「添字付きの値は配列、ポインター、またはベクターではありません」という赤い行があります。xcode、Mavericks OSX を使用しています。私の配列はすべて別の場所で定義されており、これまでプログラム全体で完全に機能していました。プログラムには他にもいくつかの操作が行われていますが、それらはこのループとは何の関係もないため、エラーが発生したコードを投稿しました。繰り返しますが、料金 [顧客] [月] [料金] ループは正常に機能しますが、出力 [顧客] [出力] は機能していません。

PSおそらく、このすべてのデータを数値的にインデックス付けされた配列に保持する背後にあるロジックはばかげていると思うでしょうが、それは学校のプロジェクト用です。ですから、このプログラムが論理的に矛盾しているなどと私に説教しないでください。ありがとう!

string headings[3][7];
string chargeLabels[3] = {"Electricity :","Water: ","Gas: "};
string outputLabels[5] = {"Subtotal: ","Discount: ","Subtotal: ","Tax: ","Total: "};
double charges[3][3][3];
double output[3][5];

for(int customer=0; customer<3; customer++)
{
    for(int heading=0; heading<5; heading++)
    {
        cout << headings[customer][heading];
    }

    for(int month=0; month<3; month++)
    {
        cout << chargeLabels[month];

        for(int charge=0; charge<3; charge++)
        {
            cout << charges[customer][month][charge] << ", ";
        }
        cout << endl;
    }
    for(int output=0; output<5; output++)
    {
        cout << outputLabels[output];
        //error is below this comment
        cout << output[customer][output] << endl;
    }
}
4

2 に答える 2

2

問題は次のとおりです。

double output[3][5];
for(int output=0; output<5; output++)

output変数名として 2 回再利用しています。

したがって、ここにアクセスしようとすると:

cout << output[customer][output] << endl;

output単なる int であるlocal にアクセスしています。

于 2013-11-02T16:11:51.817 に答える