小编rec*_*hen的帖子

如何定义可扩展的C++枚举系统

我的枚举项目遇到了问题.在EventDef.h中,

enum EventDef {
    EVT1 = 0,
    EVT2,
    EVT3,
    EVT_NUM,
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以在另一个头文件UIEventDef.h中扩展EventDef系统

#include "EventDef.h"
enum UIEventDef {
    UIEVT1 = EVT_NUM,
    UIEVT2,
    UIEVT3,
}
Run Code Online (Sandbox Code Playgroud)

但是,有一个限制,我不能以同样的方式在NetEvent.h中这样做.

#include "EventDef.h"
enum NetEventDef {
    NETEVT1 = EVT_NUM,
    NETEVT2,   //wrong: this will have the same value as UIEVT2
    NETEVT3,  
}
Run Code Online (Sandbox Code Playgroud)

在C++中是否有更好的编译时解决方案,例如可以提供帮助的模板?

c++ macros enums templates

2
推荐指数
1
解决办法
2254
查看次数

标签 统计

c++ ×1

enums ×1

macros ×1

templates ×1