Invalid operands to binary expression('const' and 'const') 에러
해결
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
가 떴다.
참고
이 글을 읽어보시라.
const 는 클래스 내부 멤버함수에서 주로 사용되는데, 함수 내부에서 값을 수정해버리는 일종의 삽질(...)을 방지하기 위한 keyword라고 볼 수 있다. 그래서 이런식으로 keyword가 붙으면 mutable을 제외하고는 클래스 내부의 어떤 변수도 수정할 수 없다.
프로그래머의 실수로 함수에서 값을 수정하는 걸 방지하기 위함인 듯하다.
객체지향 수업을 들은 지 좀 됐는데
알고리즘을 풀다보면 OOP, 클래스나 연산자 오버로딩 등은 잊은 채 STL만 주구장창 쓰는 나를 발견한다.
사실 이 문제도 왜 안될까 고민하다가 따로 compare
함수를 만들어서 정렬했었다.
C++를 다시 공부할 필요성을 느꼈다.
Author And Source
이 문제에 관하여(Invalid operands to binary expression('const' and 'const') 에러), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@synodical/Invalid-operands-to-binary-expressionconst-and-const-에러저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)