강아지를 좋아하는 컴공생

[C2678] 이항 '==': 왼쪽 피연산자로 'type' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다. 본문

c++/에러

[C2678] 이항 '==': 왼쪽 피연산자로 'type' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.

정인하이 2020. 6. 4. 00:17

문제상황

템플릿 함수를 만들며 내가 만든 데이터타입인 Student타입 데이터를 처리하려다보니 비교연산자==에서 처리하지 못하는 상황이 발생했다. 본래의 연산자==의 기능으로는 처리하기에 명확하지 않은 상황이라는 뜻이다.

 

에러메세지는 다음과 같았다.

이항 '==': 왼쪽 피연산자로 'T'형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.

 

 

이곳에서 에러가 발생했다. ==처리가 애매하다고 컴파일러가 알려주는 것이다

 ->  이곳에서 에러가 발생했다!

      ==처리가 애매하다고 컴파일러가 알려주는 것이다

 

 

main 함수에서 Student타입의 객체가 담긴 배열 std를 인자로 넘겨 arr[i]와 findData는 Student객체를 비교하는 상황이다

 

 

 

 

MS 참고

https://docs.microsoft.com/ko-kr/cpp/error-messages/compiler-errors-2/compiler-error-c2678?view=vs-2019

 

컴파일러 오류 C 2678

컴파일러 오류 C 2678Compiler Error C2678 11/04/2016 읽는 데 2분 이 문서의 내용 --> 이항 'operator': 왼쪽 피연산자로 'type' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.binary 'operator' : no ope

docs.microsoft.com

 

 

 

 

 

해결방법

'Student 타입의 데이터를 처리'하는 것에서 문제가 발생하는 것이기 때문에, Student의 클래스에 연산자== 오버로딩을 해주면 된다. Student 타입의 데이터도 처리할 수 있도록.

 

 

Student.h 헤더파일
Student.cpp cpp파일

 

Student 객체끼리 비교하는 상황에서 name이나 score를 가지고 비교할 수 있도록 우리가 직접 오버로딩해주어야한다!