C2676 이항 '<': 'const _Ty'이(가) 이 연산자를 정의하지 않거나 미리 정의된 연산자에 허용되는 형식으로의 변환을 정의하지 않습니다.
본 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있다면 언제든지 피드백을 주시면 감사하겠습니다. 참고로만 활용해주시길 바랍니다.
문제점
우선순위 큐의 원소로 구조체를 넣어서 heap 구조로 정리할 때 비교가 불가능하여 오류가 발생하였다.
int, float와 같이 원래 존재하는 변수형이면 가능했겠지만, node, edge와 같은 타입을 직접 만들었기에 오류가 발생하였다.
해결
구조체 내부 연산자 오버로딩을 추가해준다.
1
2
3
4
5
6
7
8
9
10
struct edge {
int weight;
int end;
edge(int a, int b) : end(a), weight(b) {};
bool operator<(const edge& e) const {
return weight > e.weight;
}
};
참고
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.