如果我有一个定义枚举的类,那么返回该枚举的成员函数是应该声明为返回该枚举,还是返回一个int?
例如:
class Foo {
public:
enum Stooge { larry, moe, curly};
Stooge WhoToPoke();
// OR: int WhoToPoke(); ???
}
我一直在声明这样一种返回枚举的方法,但是如果我把它声明为int,我不知道它是'更好的风格'还是某种方式更适用于客户端。
答案 0 :(得分:9)
enum
为调用者提供了一些类型安全性...例如,当期望int
时,他们无法将Foo::Stooge
作为参数传递,或初始化Foo: :使用其他类型的(未播放)int
或enum
进行虚张声势。
BobTFish的评论正确地指出,仍有许多讨厌的代码可以编译 - 比我记忆中的更多,因为我不会尝试编写错误的代码来继续探查编译器检查的边缘! C ++ 11对enum class
es。
此外,如果你添加说std::ostream& operator<<(std::ostream&, Stooge)
函数,那么他们可以传递值 - 实现可以保证符号名称(即他们实际上看到“拉里”,“萌”或“卷曲”流)。