2

我有问题使用

EXPECT_EQ(expected, actual)

当预期是枚举而实际是某个对象时,我遇到了一种情况。

这个对象对 operator == 这个枚举有重载,但是它执行的问题 if (expected == actual)而不是if (actual == expected),所以尝试使用枚举作为 lhs 是错误的,有没有办法“覆盖”这个?我试图用特定的模板做一些事情,但没有奏效。

4

2 回答 2

2

您可以将对称比较定义为非成员函数:

bool operator==(my_enum e, my_object const & o) {return o == e;}
于 2013-08-19T15:56:28.627 回答
0

如果您将其operator==设为非成员,则左侧操作数可以是您的枚举类型而不是类类型。

于 2013-08-19T15:55:39.150 回答