Если execute()
предполагается принимать массив целых чисел, вероятно, вы должны объявить его как это:
void execute(int* anArr, int anArrLength, int aVal)
{
// ...
}
Обратите внимание, что есть несколько различий в ваш метод:
anArr
просеивает в качестве указатель в начало массива. Клиентский код может просто передать имя переменной массива, поскольку по определению это эквивалентно «указателю на начало массива».
anArrLength
передается для указания длины длины. Это необходимо для обеспечения того, чтобы метод execute()
не получал доступ к памяти, которая находится вне границ массива (или того, что было выделено для массива). Это может привести к повреждению памяти .
Вы можете улучшить сигнатуру метода выше, добавив возвращаемое значение для указания успеха или сбоя. Это позволит коду клиента обнаруживать, были ли какие-либо проблемы. Например:
// Returns true on success, false on failure
bool execute(int* anArr, int anArrLength, int aVal)
{
// Get "value" through whatever means necessary
// ...
if (value >= anArrLength)
{
// Out of bounds of array!
return false;
}
anArr[value] = aVal;
// Do whatever else you need to do
// ...
return true;
}
Немного изменив код (т. Е. Избавившись от 'Instruction'), я получаю другую ошибку в одной строке, и это синтаксис. Какой компилятор вы используете? – dirkgently
im компиляция с g ++ – user69514
@unknown: только для обеспечения, это код, вставленный выше в classes.h? и какая из этих строк равна 81? это строка с «void execute» – Aishwar