-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
error C2672: 'begin': 일치하는 오버로드된 함수가 없습니다?
22.03.31 04:28 작성 조회수 1.36k
0
동작할 것 같은데 ... 위의 에러가 나서요.
설명 좀 해주세요.
#include <iostream> #define SIZE 5 using namespace std; int add(int arr[], int size) { int sum = 0; for (auto element : arr) { sum += element; } return sum; } int main() { int a[] = { 1,2,3,4,5 }; int c = add(a, SIZE); }
답변을 작성해보세요.
0
강민철
2022.03.31
제시하신 코드 속 배열 a (int a[] = { 1, 2, 3, 4, 5};) 에는
.begin() 함수를 사용할 수 없어 발생한 에러입니다.
C++의 range based for loop는 .begin(), .end() 함수를 내포한 배열에만 사용이 가능합니다.
제대로 동작하는 코드의 예시는 아래와 같습니다.
std::array로 선언한 배열은 .begin()을 내포할 수 있습니다.
그렇기에 range based for loop을 사용할 수 있지요.
#include <iostream>
#include <array>
#define SIZE 5
using namespace std;
int add(array<int,5> arr, int size) {
int sum = 0;
for (auto element : arr) {
sum += element;
} return sum; }
int main() {
array<int, 5> a = { 1,2,3,4,5 };
int c = add(a, SIZE);
}
참고로, 어떤 강의에서 발생한 문제인지를 알려주시면 더 상세히 알려드릴 수 있습니다.
감사합니다.
답변 1