有谁知道为什么我在具有 3 路运算符覆盖的类上的相等操作出现编译器错误?我正在使用 VS 2019。
class Rectangle
{
public:
constexpr Rectangle(const int width, const int height) :
width{ width }, height{ height } { }
auto operator<=>(const Rectangle& rhs) const {
return width * height <=> rhs.width * rhs.height;
}
int width;
int height;
};
void Test() {
Rectangle r1(5, 10);
Rectangle r2(10, 5);
auto ret1 = r1 < r2;
auto ret2 = r1 <= r2;
auto ret3 = r1 == r2; // error on this line but previous two are good
}
我收到上述行的错误: NativeConsoleApp.cpp(68,20): error C2676: binary '==': 'Rectangle' does not defined this operator or a conversion to an type接受预定义的运算符
编辑:请注意非默认运算符 <=> 的解释不会生成 == 和 C++20 中的 !=并没有解决不等式运算符有效但相等运算符无效的原因。
编辑:一个月后重读后,上面的链接现在有意义了。