포스트

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 라이센스를 따릅니다.