Ошибка в переборе массива в цикле for

106
01 января 2022, 14:20

Функция:

extern int FeedForward(int inputs[])
{
    for (int x : inputs.begin())
//Ошибка здесь   ^^^^^^
    {}
}

Выдает ошибку:
E0153 выражение должно иметь тип класса
Почему так?

Answer 1

Это не сработает. Не сработает потому, что у вас int inputs[] превращается в указатель, а это С++, и никакого .begin() у указателя не предусмотрено, и внутри функции вы ничего не знаете о том, на какое количество элементов он указывает...

int FeedForward(int inputs[], int N)
{
    for (int i = 0; i < N; ++i)
    {
        int x = inputs[i];
        ...
    }
}

Можно - если вы будете передавать в функцию именно массив - воспользоваться шаблонами, типа

template<int N>
int FeedForward(int (&inputs)[N])
{
    for(int x: inputs)
    {}
}
...
int a[5];
FeedForward(a);
READ ALSO
Поиск палиндрома максимальной длины

Поиск палиндрома максимальной длины

Создать файл из N целых чиселНайти отрезок массива максимальной длины, в котором первое число равно последнему, второе - предпоследнему...

184
Run-Time Check Failure #3 - The variable &#39;r&#39; is being used without being initialized

Run-Time Check Failure #3 - The variable 'r' is being used without being initialized

Ввод, вывод и main в других файлахНо там нет ошибок

194
Вывод в два столбца

Вывод в два столбца

Как сделать вывод в два столбца с помощью цикла do while

73
Удаление строки в файле при условии

Удаление строки в файле при условии

Нужно описать структуру, вывести её на экран и записать в файл, а потом удалить строчку с введённой длительностью (одно из полей структуры)

227