강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

smile2000님의 프로필 이미지
smile2000

작성한 질문수

홍정모의 따라하며 배우는 C++

error C2672: 'begin': 일치하는 오버로드된 함수가 없습니다?

작성

·

2K

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); }

답변 1

0

제시하신 코드 속 배열 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); 

}

 

참고로, 어떤 강의에서 발생한 문제인지를 알려주시면 더 상세히 알려드릴 수 있습니다.

감사합니다.

smile2000님의 프로필 이미지
smile2000

작성한 질문수

질문하기