[C++] xcode - Invalid operands to binary expression('const' and 'const') 에러
728x90
SMALL

 

해결

const keyword 붙이기

bool operator<(const Edge &edge) const { return distance < edge.distance; }

내 사례

백준에서 크루스칼 알고리즘을 풀던 중,
노드의 정보 중 간선의 가중치를 클래스 내 연산자 오버로딩으로 정렬하기 위해

bool operator<(const Edge &edge) { return this->distance < edge.distance; }

를 작성하였으나, xcode에서 빌드가 안됨!
boj 채점에 제출해보니 AC가 떴다.

참고

https://ally10.tistory.com/24

이 글을 읽어보시라.

const 는 클래스 내부 멤버함수에서 주로 사용되는데,
함수 내부에서 값을 수정해버리는 일종의 삽질(...)을 방지하기 위한 keyword라고 볼 수 있다.
그래서 이런식으로 keyword가 붙으면 mutable을 제외하고는
클래스 내부의 어떤 변수도 수정할 수 없다.

 

 

프로그래머의 실수로 함수에서 값을 수정하는 걸 방지하기 위함인 듯하다.


 

 

 

객체지향 수업을 들은 지 좀 됐는데
알고리즘을 풀다보면 OOP, 클래스나 연산자 오버로딩 등은 잊은 채 STL만 주구장창 쓰는 나를 발견한다.
사실 이 문제도 왜 안될까 고민하다가 따로 compare 함수를 만들어서 정렬했었다.

C++를 다시 공부할 필요성을 느꼈다.

 

728x90
LIST