对于作用域枚举,涉及类型转换很麻烦

Never_Satisfied 2015-02-19 04:36:00
//x[0]为time_complete_in_order::a
//x[1]为time_complete_in_order::b
//x[2]为time_complete_in_order::c
enum class time_complete_in_order :char{ a, b, c };
std::array<int,3>x;
//在使用下标时,即使底层类型为size_t,依旧要手动转换类型,请问有没有方便的使用方法。
x[int(time_complete_in_order::a)]=1;
...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Never_Satisfied 2015-02-23
  • 打赏
  • 举报
回复
引用 2 楼 unituniverse2 的回复:

class time_complete_in_order
{
    time_complete_in_order(void) = delete;
    time_complete_in_order(const time_complete_in_order &) = delete;
public:
    enum val { a, b, c };
};
不理解你的用法,可否加给些注释 谢谢
unituniverse2 2015-02-20
  • 打赏
  • 举报
回复

class time_complete_in_order
{
    time_complete_in_order(void) = delete;
    time_complete_in_order(const time_complete_in_order &) = delete;
public:
    enum val { a, b, c };
};
FancyMouse 2015-02-20
  • 打赏
  • 举报
回复
人家的设计目标就是为了防止隐式转换。你对隐式转换有需求的话那就用一般的enum。需要scope的话自己套一个namespace

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧