ETC/기타

[기타] C++ C2572 error(기본 인수 재정의)

쪽제비 2017. 7. 4. 15:50

문법을 잘 몰라서 발생한 에러이다.

기본 인수(디폴트 매개변수) 를 선언할때 발생하였고, 해결방법은 매우 간단하다.


우선 에러가 발생한 부분부터 살펴보자.


현재 사진이 올라가지 않아서.... 소스코드만 올려보도록 하겠다.


bool GetCameraImg(Mat& img, int x = offsetX, int y = offsetY, int width_ = width, int height_ = height);

선언을 위와 같이 해주고 정의를 할때에는 아래와 같이 해주었다.

bool GetCameraImg(Mat& img, int x = offsetX, int y = offsetY, int width_ = width, int height_ = height) 

{

...

}


그러자 C2572 Error가 발생하였다.


offsetX, offsetY, width, height 는 전역변수 이다.


처음에는 전역변수를 기본인수로 사용해서 그런건줄 알았으나...

답은 선언에만 디폴트 매개변수를 써주고 정의에는 쓰지 않아야 한다는 것이다...

결국 정의를 아래와 같이 수정하였다.


bool GetCameraImg(Mat& img, int x, int y, int width_, int height_) 

{

...

}


매우 간단하게 해결....