enum E;
void Foo(E e);
enum E {A, B, C};
编译器拒绝了这个。我在谷歌上快速查了一下,大家的共识似乎是“你不能这样做”。为什么会这样呢?
澄清2:我这样做是因为我在一个类中有私有方法,这些方法接受上述的枚举类型,而我不想让枚举的值暴露出来。例如,我不希望任何人知道E被定义为
enum E {
FUNCTIONALITY_NORMAL, FUNCTIONALITY_RESTRICTED, FUNCTIONALITY_FOR_PROJECT_X
}
由于项目X不是我希望用户了解的内容。
所以,我想提前声明枚举,这样我就可以将私有方法放在头文件中,在cpp文件中内部声明枚举,并将构建的库文件和头文件分发给其他人。
至于编译器,使用的是GCC。