Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- operator==
- 자료구조
- 이진노드
- 이진트리
- 노드
- 동빈나참고
- 함수객체
- 난수중복제거
- 상속
- 멀티스레드
- 튜토리얼
- 네트워크 프로그래밍
- C++
- c2678
- GitHub
- 이진순회트리
- 과제5차
- BST
- Git
- remove_if
- 클라이언트
- 채팅프로그램
- 소켓 프로그래밍
- list
- 에러
- greater
- 과제
- bind
- 연산자오버로딩
- placeholder
Archives
- Today
- Total
강아지를 좋아하는 컴공생
[C2893] 컴파일러가 함수 템플릿을 특수화 하지 못했습니다. 본문
list 컨테이너 구조인 li2를 가지고 sort()메서드를 이용하려고 했더니 오류가 났다.
에러메세지는 다음과 같았다.
함수 템플릿 'unknown type std::less<void>operator ()(_Ty1 && _Ty2 &&) noexcept(<expr>) const'을(를) 특수화하지 못했습니다.
문제 원인
원인은 다음과 같다. 내가 만든 타입인 CMyPoint로 li2를 만들었다.
CMyPoint 객체끼리 sort()를 하려면 어떠한 기준을 갖고 크다작다를 비교해야하는데 내가 CMyPoint 클래스에서
operator<의 오버로딩을 해주지 않아서 비교하는 것에서 컴파일러가 혼란을 빚은 것이다.
해결 방법
CMyPoint 클래스로 갔더니 operator> (크다를 비교할 수 있는 연산자) 만 오버로딩을 해놓았더라..
operator< (작다를 비교할 수 있는 연산자) 오버로딩을 추가해주면 된다!
operator< 메서드도 오버로딩을 추가했다.
나름의 기준을 가지고 객체의 크다 작다를 비교하면 된다.
나는 CMyPoint가 가지고있는 멤버변수인 x값을 가지고 크다 작다를 비교했다.
그 후 다시 컴파일을 해보니 잘 된다!
'c++ > 에러' 카테고리의 다른 글
[Error] exe 지정된 파일을 찾을 수 없습니다 (0) | 2022.11.09 |
---|---|
[Error] LNK2019 / LNK1120 (0) | 2022.09.20 |
[C2678] 이항 '==': 왼쪽 피연산자로 'type' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다. (0) | 2020.06.04 |
[C2683] 다형성 클래스 에러 (0) | 2020.05.26 |
[C2662] const 선언 오류 (0) | 2020.05.26 |