我有一个小的枚举类,我想在几个地方转发声明。有没有办法将基类型与前向声明分离?我担心稍后会有人改变类型。
例如我有枚举
onLocationChange()
前瞻声明将是:
enum class e_mode : bool
{
SYNC,
ASYNC
};
如果有人添加了另一个值,他需要将bool更改为char,然后绕过更改前向声明。我想避免这样......
答案 0 :(得分:6)
enum
的基础类型可以通过typedef
预先定义:
typedef bool e_mode_base_t;
然后,您可以将此类型用于enum
的前向声明:
enum class e_mode: e_mode_base_t;
以及enum
的定义:
enum class e_mode : e_mode_base_t
{
SYNC,
ASYNC
};
这样,当您希望更改e_mode_base_t
的基础类型时,您只需要修改enum
的定义。
您也可以通过using
代替typedef
来创建类型别名:
using e_mode_base_t = bool;
可能更具可读性。
答案 1 :(得分:0)
你可以有一个“.h”文件,它只定义枚举的前向声明。在向前声明枚举的情况下,然后包含这个“廉价”的h文件。