정수 (정수 이상을 포함) 중 하나와 정수를 비교할 수 있어야합니다. ...C++의 다른 유형에 대한 비교 연산자 오버로딩
다른 유형의 항등 연산자를 어떻게 오버로드합니까?
는 기본적으로 내가이이
struct MyClass {
int start;
int middle;
int threequarters;
};
같은 클래스와 오버로드 된 연산자 그래서
inline bool operator==(const MyClass& lhs, const MyClass& rhs) {
return lhs.middle == rhs.middle;
}
나뿐만 아니라 중간 변수에 대해 비교해야 정수와 비교,하지만 난 확실하지 않은 경우 두 세트의 연산자 함수가 필요합니다. 정수는 lhs이고 정수는 rhs입니다.
inline bool operator==(const int& lhs, const MyClass& rhs) {
return lhs == rhs.middle;
}
inline bool operator==(const MyClass& lhs, const int& rhs) {
return lhs.middle == rhs;
}
예, 그렇게해야합니다 way - support (int, MyClass) 및 (MyClass, int)입니다. 연산자 중 하나를 다른 연산자로 정의 할 수 있습니다.또 다른 가능성은 int에서 생성하는 MyClass의 생성자를 갖는 것입니다. 그러면 컴파일러가 int를 만나면 연산자의 MyClass 유형으로 승격 할 수 있기 때문에 연산자 (MyClass, MyClass) 만 필요합니다. – qeadz
그래서 MyClass와 MyClass를 정수로 비교하고 MyClass와 정수를 비교하려면 대부분의 다른 비교 함수를 참조 할지라도 모든 비교 함수 (총 18 개)가 3 세트 필요합니다. – user3235200
또는 클래스에 변환 생성자 인'MyClass (int i) : middle (i) {}'을 부여하십시오. – juanchopanza