有很多信息,例子等,用于运算符在Web上重载所有类型。但我不能在我的生活中找到一个例子,说明如何为简单的枚举操作,例如|=
或+=
操作符。运算符在枚举上为组合赋值运算符重载
对于bitwise or
的实现是这样的:
inline MyEnum operator | (MyEnum a, MyEnum b)
{
return (MyEnum)((int)a | (int)b);
}
我所发现的混合操作不过是类的实例;这可以轻松将LHS的指针指向this
。在一个枚举中,我没有那个,那么正确的语法是什么?
更新:我已经尝试过这个版本:
inline MyEnum operator |= (MyEnum a, MyEnum b)
{
return (MyEnum)((int)a | (int)b);
}
和汇编,但不会返回正确bitwise or
值。
Related posts,http://stackoverflow.com/a/4421729/3747990 – Niall 2014-09-03 13:52:03
你可能想检查例如[this reference](http://en.cppreference.com/w/cpp/language/operator_assignment)。它会告诉你,你确实在赋值表达式的左边,在函数的第一个参数中。有关更多信息,您可能还需要[阅读本文](http://en.cppreference.com/w/cpp/language/operators)。 – 2014-09-03 13:52:11
关于你的更新,请再次阅读[我的链接引用](http://en.cppreference.com/w/cpp/language/operator_assignment)来查看参数和返回类型是什么。希望这应该告诉你更多你需要做的事情。还要考虑你如何重载输出和输入操作符,当涉及到参数和你应该返回的东西时它们是相似的(但当然做不同的事情)。 – 2014-09-03 14:06:33