Проблема с вектором внутри класса - PullRequest
0 голосов
/ 29 сентября 2008

У меня есть этот код внутри класса:

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 ]

3 голосов
/ 29 сентября 2008

Похоже, что дырка - это простое int, и вы пытаетесь его подписать. Это то, что вы хотите сделать? Где объявлено отверстие?

0 голосов
/ 29 сентября 2008

На основании того, что вы сказали в своем ответе, дыра - это указатель на n дырочные объекты. Это означает, что ваш код не делает то, о чем вы думаете.

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 нет переменной-члена отверстия. Вероятно, это проблема, поскольку она будет найдена перед любой глобальной переменной, называемой дырой (если я правильно помню свои правила области видимости).

0 голосов
/ 29 сентября 2008

Дыра действительно большой класс,
SendStones является членом функции в классе.
Я не буду отправлять весь файл, но я могу сказать, что
дыра [currenthole] является дырой * дыра [14];
Это большая программа и проект, поэтому я отправил соответствующий код.

Вот код функции ReciveStones:



void ReciveStone (Камень * камень) { stns.push_back (rcvstone); }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...