V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iqoo
V2EX  ›  程序员

C++ 中的 enum 可以强制要求使用命名前缀吗?

  •  
  •   iqoo · 2022-11-18 17:14:50 +08:00 · 1342 次点击
    这是一个创建于 734 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如:

    enum State {
      NONE,
      // ...
    }
    

    会暴露出一个 NONE 的名字出来,感觉很不爽。可不可以必须使用 State::NONE ,直接用 NONE 的话就报错?

    5 条回复    2022-11-19 08:38:47 +08:00
    fengjianxinghun
        1
    fengjianxinghun  
       2022-11-18 17:16:32 +08:00   ❤️ 2
    c++11 以上
    enum class State
    tool2d
        2
    tool2d  
       2022-11-18 17:20:12 +08:00
    所以我一般都是写 STATE_NONE (手动柴犬头)

    可以用别的办法达到 Op 这个效果,但就不太像 C/C++原始味道了。
    aqtata
        3
    aqtata  
       2022-11-18 17:20:58 +08:00   ❤️ 1
    `enum class`or`enum struct`
    Machard
        4
    Machard  
       2022-11-18 17:33:43 +08:00
    不如直接用 namespace
    hardwork
        5
    hardwork  
       2022-11-19 08:38:47 +08:00 via Android
    c++11 之前的话套个 namespace
    namespace State {
    enum State {
    NONE,
    // ...
    };

    c++11 enum class ,但是和 int 之类互转要做 cast 转换
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1013 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:56 · PVG 03:56 · LAX 11:56 · JFK 14:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.