Проблема с вектором внутри класса

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

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] 'для индекса массива

в чем проблема? я не понимаю. Спасибо.

Пожалуйста, отформатируйте свой код как код (code) или щелкните 101010 после выбора кода) для удобства чтения. Кроме того, на каком языке?

Swati 29.09.2008 20:28

Сократите свой код до наименьшего фрагмента, который четко воспроизведет проблему с минимальным количеством зависимостей от вашего проекта.

Shog9 29.09.2008 20:42
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
2
413
3

Ответы 3

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

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

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



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

Исходя из того, что вы сказали в своем ответе, hole - это указатель на объекты п 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 с именем отверстие?

- На самом деле, перечитывая то, что вы написали, я еще больше уверен, что вы делаете не то, что думаете. SendStones является членом класса Hole, верно? Убедитесь, что в вашем классе Hole нет переменной-члена отверстия. Вероятно, это проблема, поскольку она будет найдена перед любой глобальной переменной с именем hole (если я правильно помню свои правила области видимости).

Другие вопросы по теме