본문 바로가기

Programming/Error

(4)
C2872 참조하는 기호가 중보되는 경우 발생하는 오류이다. 따라서 참조 기호를 명확하게 명시 하거나 선언의 위치를 다시 검토 하기 바란다. 필자는 영상처리 라이브러리 opencv를 사용하면서 종종 C2872를 마주하였다. 보통 아래 글귀로 보게된다. error C2872 : ACCESS_MASK : 모호한 기호입니다. using namespace cv와 winnt ACCESS_MASK와 중복되어 발생하는 컴파일 오류이다. 해결 방법은 2가지가 있다. 1. #include 선언을 모든 opencv 관련 해더 선언 보다 위에 선언하는 것이다. 2. 모호한 위치에 참조 선언을 명확하게 표기 하는 것이다. 참고 자료 1 : docs.microsoft.com/ko-kr/cpp/error-messages/compiler-e..
C2280 다시 해당 Error를 발생시키지 않기 위해 정리를 진행한다. C2280의 Error message는 삭제된 함수를 참조하려고 합니다 이다. Microsoft Docs에 따르면 해당 Error는 6가지 상황에 발생을 한다. 1. 명시적으로 삭제 된 함수 2. 초기화 되지 않은 데이터 멤버 3. 참조 및 const 데이터 멤버 4. 이동 가능한 삭제 암시적 복사 5. Variant 및 volatile 멤버 6. 간접 기본 멤버가 삭제됨 1,4번에 접촉되어 Error message가 발생하였으며 멤버 변수 중 하나가 Class생성 시 초기화를 진행하지 않고 멤버 함수 중에 초기화를 진행하였기에 문제가 발생하였다. 참고 자료 1 : https://docs.microsoft.com/ko-kr/cpp/error-..
C2440 C2440을 검색하면 관련 검색어에서 볼 수 있듯이 대표적으로 아래와 같은 상황에서 볼 수 있습니다. const char * 형식의 값을 사용하여 char * 형식의 엔터티를 초기화할 수 없습니다. Microsoft Docs에서 C2440는 아래와 같이 정의합니다. type1 에서 type2 (으)로 변환할 수 없습니다. 저의 경우 Class 생성자 초기화 단계에서 매크로를 통해 char * 값을 가져왔을 때 아래의 결과로 보았습니다. 알고보니 매크로를 통해 가져온 값이 const char * 값이였습니다. 혹시 C2440 Message를 보게 될 경우 사용중인 변수의 type을 확인 하기 바랍니다.
C4430 C4430 : 형식 지정자가 없습니다. int로 가정합니다. 참고 : C++ 에서는 기본 int를 지원하지 않습니다. 해당 Error 내용은 선언 위치에 관한 것이다. 위 예시를 보면 알 수 있듯이 선언 위치에 문제가 있다. 선언 위치를 변경한다면 해결 가능하다. C4430은 Class간 교차 참조시에 자주 발생하므로 주의 바란다.