类内矢量的问题

时间:2008-09-29 16:25:06

标签: arrays vector

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

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]'

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

3 个答案:

答案 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的全局变量之前找到(如果我记得我的范围规则正确的话)。