好风格 - 返回枚举或int?

Zan*_*ith 4 c++ enums coding-style

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

例如:

class Foo {

  public:

    enum Stooge { larry, moe, curly};

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

}
Run Code Online (Sandbox Code Playgroud)

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

Ton*_*roy 9

enum提供了呼叫者某种类型的安全...例如,它们不能穿过的int一个时,作为参数Foo::Stooge的预期,或初始化一个Foo ::傀儡与(uncast)intenum另一种类型的.

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

此外,如果你添加一个std::ostream& operator<<(std::ostream&, Stooge)函数,那么他们可以传递值 - 实现可以保证一个符号名称(即他们实际上在流中看到"larry","moe"或"卷曲").