全局重载前缀运算符 ++/--
Overloading prefix operators ++/-- globally
我可以像这样全局重载一元 + 和 - 运算符:
#include <cstdint>
enum local_states_t
{
LOCAL_STATE_A = 1,
LOCAL_STATE_B,
LOCAL_STATE_LIMIT,
};
typedef uint32_t state_type_t;
state_type_t operator-(local_states_t state) { return static_cast<state_type_t>(state | (1<<31)); }
我可以对前缀 ++/-- 做同样的事情吗?这里的问题当然是编译器如何知道它只需要为 local_state_t - 类型调用这些函数?前缀运算符没有虚拟值..
(来自评论)
是的 - 您可以定义 local_states_t& operator++(local_states_t &)
。不像 类,枚举不能有成员,所以你需要一个自由函数。
你也可以定义为returnstate_type_t
,这是不常见但允许的。
我可以像这样全局重载一元 + 和 - 运算符:
#include <cstdint>
enum local_states_t
{
LOCAL_STATE_A = 1,
LOCAL_STATE_B,
LOCAL_STATE_LIMIT,
};
typedef uint32_t state_type_t;
state_type_t operator-(local_states_t state) { return static_cast<state_type_t>(state | (1<<31)); }
我可以对前缀 ++/-- 做同样的事情吗?这里的问题当然是编译器如何知道它只需要为 local_state_t - 类型调用这些函数?前缀运算符没有虚拟值..
(来自评论)
是的 - 您可以定义 local_states_t& operator++(local_states_t &)
。不像 类,枚举不能有成员,所以你需要一个自由函数。
你也可以定义为returnstate_type_t
,这是不常见但允许的。