Kiedy próbuję skompilować następujący kod w gcc 4.8.2, pojawia się następujący błąd:zakres oparty na pętli na tablicy przekazany do funkcji spoza głównego
test.cc: In function ‘void foo(int*)’: test.cc:15:16: error: no matching function for call to ‘begin(int*&)’ for (int i : bar) { ^
Wraz z grupą innych while z głębiej w bibliotece szablonów.
#include <iostream>
using namespace std;
void foo(int*);
int main() {
int bar[3] = {1,2,3};
for (int i : bar) {
cout << i << endl;
}
foo(bar);
}
void foo(int* bar) {
for (int i : bar) {
cout << i << endl;
}
}
Jeśli ponownie zdefiniować foo
użyć indeksowany pętli, to kod kompiluje i zachowuje się w oczekiwany sposób. Ponadto, jeśli przestawię pętlę wyjściową na podstawie zakresu do main
, otrzymam oczekiwane zachowanie.
Jak przekazać tablicę bar
do foo
w taki sposób, aby była w stanie wykonać pętlę for na bazie zakresu?