如果我有一个定义枚举的类,应该将返回该枚举的成员函数声明为返回该枚举,还是返回一个 int?
例如:
class Foo {
public:
enum Stooge { larry, moe, curly};
Stooge WhoToPoke();
// OR: int WhoToPoke(); ???
}
我一直在声明这样的方法作为返回枚举,但不知道如果我将它声明为 int,它是否是“更好的风格”或者对客户更有用。
如果我有一个定义枚举的类,应该将返回该枚举的成员函数声明为返回该枚举,还是返回一个 int?
例如:
class Foo {
public:
enum Stooge { larry, moe, curly};
Stooge WhoToPoke();
// OR: int WhoToPoke(); ???
}
我一直在声明这样的方法作为返回枚举,但不知道如果我将它声明为 int,它是否是“更好的风格”或者对客户更有用。
为调用者enum
提供了一些类型安全性......例如,当需要 an 时,他们不能将 anint
作为参数传递,或者使用(未转换)或其他类型的Foo::Stooge
an 初始化 Foo::Stooge 。int
enum
BobTFish 的评论正确地指出,仍然有很多讨厌的代码可以编译 - 比我记得的要多,因为我不会尝试编写糟糕的代码来继续探索编译器检查的边缘!C++11 对enum class
es 进行了改进。
此外,如果您添加一个std::ostream& operator<<(std::ostream&, Stooge)
函数,那么他们可以流式传输值 - 实现可以保证一个符号名称(即他们实际上会在流中看到“larry”、“moe”或“curly”)。