我在一个类中有这个代码:
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]'
有什么问题?我不明白。 感谢。
答案 0 :(得分:3)
看起来洞是一个简单的int,你试图下标它。这是你的意思吗?洞被宣布在哪里?
答案 1 :(得分:0)
洞是一个非常大的班级,
SendStones是类中的函数成员
我不会发送整个文件,但我可以这样说
孔[currenthole]是一个洞*洞[14];
这是一个大项目和项目,所以我发送了所需的相关代码。
以下是ReciveStones函数的代码:
void ReciveStone(Stone * rcvstone)
{
stns.push_back(rcvstone);
}
答案 2 :(得分: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]'。你确定没有第二个 int 类型的声明名为 hole 吗?
- 实际上,重新阅读你写的内容,我更确定你没有做你认为自己在做的事情。 SendStones是Hole类的成员,对吗?检查您的Hole类中是否包含孔成员变量。这可能是问题,因为它会在任何名为hole的全局变量之前找到(如果我记得我的范围规则正确的话)。