订阅值不是数组,指针或向量,C ++

时间:2013-11-02 16:07:57

标签: c++ arrays

所以,我得到了上面的错误(在标题中),但由于某种原因,它只是在第二个循环上抛出这个错误。注意我使用客户变量的第一个和第二个循环工作绝对正常,没有抛出错误或任何东西。但是在最后一个循环中,输出[customer] [charge]数组,输出[customer]下面有一条红线表示“Subscripted value不是数组,指针或向量”。我正在使用xcode,Mavericks OSX。我的所有数组都在其他地方定义,并且在整个程序中完美地工作到现在为止。程序中还有一些其他操作正在进行,但它们与此循环无关,所以我只发布了给出错误的代码。我再说一遍,收费[客户] [月] [收费]循环工作正常,但输出[客户] [输出]不起作用。

P.S。您可能会认为将所有这些数据保存在数字索引数组中的逻辑是愚蠢的,但它适用于学校项目。所以不要告诉我这个程序在逻辑上是不一致的或者其他什么。谢谢!

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;
    }
}

2 个答案:

答案 0 :(得分:4)

for声明中:

for(int output=0; output<5; output++)
{

您声明了另一个变量int output,该变量在double output[3][5]语句之外使用相同的名称隐藏for

答案 1 :(得分:2)

这是你的问题:

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

您重复使用output作为变量名称。

所以当你试图在这里访问它时:

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

您正在访问本地output,这只是一个int。