0

我在一个类中有这个代码:

void SendStones()
{
    int currenthole = hole;
    int lastplace = 0;
    for(int i=0;i<stns.size();i++)
    {
        while(1)
        {//Calculate new currenthole
            if(currenthole == 13) { currenthole = 7; break;}
            if(currenthole == 14) { currenthole = 6; break;}
            if((currenthole<=12 && currenthole > 7) || (currenthole<=6 && currenthole > 1)) { currenthole--; break;}
        }
        lastplace = stns.size()-1;
        hole[currenthole]->ReciveStone(stns[lastplace]);//PROBLEM
        stns.pop_back();
    }
}

vector<Stones*> stns;

所以它会出现这个错误:数组下标的无效类型`int [int]'

有什么问题?我不明白。谢谢。

4

3 回答 3

3

看起来 hole 是一个简单的 int,而您正在尝试对其下标。这就是你的意思吗?洞在哪里声明?

于 2008-09-29T16:28:59.033 回答
0

根据您在回答中所说的,hole 是指向n Hole 对象的指针。这意味着你的代码没有做你认为它正在做的事情。

int currenthole = hole;

这是存储指向数组集合中第一个对象的地址值,这意味着此代码

if(currenthole == 13) { currenthole = 7; break;}
            if(currenthole == 14) { currenthole = 6; break;}
            if((currenthole<=12 && currenthole > 7) || (currenthole<=6 && currenthole > 1)) { currenthole--; break;}

可能是胡说八道。

它没有解释为什么您会收到“数组下标的无效类型 `int[int]'”错误。您确定没有第二个名为hole的int类型声明吗?

——实际上,重新阅读你写的东西,我更加确定你没有做你认为你正在做的事情。SendStones 是 Hole 类的成员,对吗?检查您的 Hole 类内部是否没有孔成员变量。这可能是问题所在,因为它会在任何名为hole 的全局变量之前找到(如果我没记错我的范围规则的话)。

于 2008-09-29T16:45:11.100 回答
0

Hole 是一个非常大的类,
SendStones 是该类中的一个函数成员。
我不会发送整个文件,但我可以说
hole[currenthole] 是一个 Hole *hole[14];
这是一个很大的程序和项目,所以我发送了所需的相关代码。

这是 ReciveStones 函数的代码:



void ReciveStone(Stone *rcvstone) { stns.push_back(rcvstone); }

于 2008-09-29T16:33:21.143 回答