具有前向声明的枚举类底层类型

Epi*_*pic 2 c++ enums

我有一个小的enum类,我想在几个地方转发声明.有没有办法将基类型与前向声明分离?我担心稍后会有人改变这种类型.

例如,我有枚举

enum class e_mode : bool
{
     SYNC,
     ASYNC
};
Run Code Online (Sandbox Code Playgroud)

前瞻性声明将是:

enum class e_mode : bool;
Run Code Online (Sandbox Code Playgroud)

如果有人添加了另一个值,他需要将bool更改为char,然后绕过更改前向声明.我想避免......

眠りネ*_*ネロク 6

所述enum的基础类型可通过来前所定义typedef:

typedef bool e_mode_base_t;
Run Code Online (Sandbox Code Playgroud)

然后,您可以将此类型用于enum前向声明:

enum class e_mode: e_mode_base_t;
Run Code Online (Sandbox Code Playgroud)

而且对于它enum的定义:

enum class e_mode : e_mode_base_t
{
     SYNC,
     ASYNC
};
Run Code Online (Sandbox Code Playgroud)

这样,您只需要修改e_mode_base_t希望更改enum基础类型的定义.

你还可创建借助一个类型别名using来代替typedef:

using e_mode_base_t = bool;
Run Code Online (Sandbox Code Playgroud)

这可能更具可读性.