好风格 - 返回枚举或int?

时间:2013-07-16 14:14:47

标签: c++ coding-style enums

如果我有一个定义枚举的类,那么返回该枚举的成员函数是应该声明为返回该枚举,还是返回一个int?

例如:

class Foo {

  public:

    enum Stooge { larry, moe, curly};

    Stooge WhoToPoke();
    // OR: int WhoToPoke(); ???

}

我一直在声明这样一种返回枚举的方法,但是如果我把它声明为int,我不知道它是'更好的风格'还是某种方式更适用于客户端。

1 个答案:

答案 0 :(得分:9)

enum为调用者提供了一些类型安全性...例如,当期望int时,他们无法将Foo::Stooge作为参数传递,或初始化Foo: :使用其他类型的(未播放)intenum进行虚张声势。

BobTFish的评论正确地指出,仍有许多讨厌的代码可以编译 - 比我记忆中的更多,因为我不会尝试编写错误的代码来继续探查编译器检查的边缘! C ++ 11对enum class es。

进行了改进

此外,如果你添加说std::ostream& operator<<(std::ostream&, Stooge)函数,那么他们可以传递值 - 实现可以保证符号名称(即他们实际上看到“拉里”,“萌”或“卷曲”流)。