Admittedly, I'm just finding my footsteps in C++ but I don't understand the error here.
The following error gets displayed:
Error 1 error C3312: no callable 'begin' function found for type 'int []'
Error 2 error C3312: no callable 'end' function found for type 'int []'
Error 3 error C2065: 'i' : undeclared identifier
4 IntelliSense: this range-based 'for' statement requires a suitable "begin" function and none was found
Code:
#include <iostream>
using namespace std;
void printArray(int[]);
int main() {
int a[] = { 1, 2, 3, 4, 5 };
printArray(a);
system("pause");
return 0;
}
void printArray(int a[]) {
for (int i : a) {
cout << i << " ";
}
}
Can't figure out what the problem is.
Best Answer
Inside
printArray
,a
is not an array! I know it looks like one, but it's not.int a[]
there meansint* a
, due to a nasty legacy from the 1850s.Here is the fix to your problem, passing in the array by reference and therefore keeping its full type (including numerical dimension):
(I've also removed some redundant code and that horrid
system("pause")
: properly configure your execution environment rather than having your program take responsibility for blocking its caller when it's finished!)(live demo)