C++中的枚举:如何传递参数?

pol*_*mon 5 c++ enums class

我在我的类定义中有以下枚举:

static class Myclass {
     ...
  public:    
     enum encoding { BINARY, ASCII, ALNUM, NUM };
     Myclass(Myclass::encoding);
     ...
}
Run Code Online (Sandbox Code Playgroud)

然后在方法定义中:

Myclass::Myclass(Myclass::encoding enc) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,但我做错了什么?如何正确传递枚举成员,这是在成员方法(以及其他方法)的类中定义的?

pau*_*cam 9

我不完全确定你为什么在这里使用"静态类".这个样板在VS2010中对我来说很好用:

class CFoo
{
public:
    enum Bar { baz, morp, bleep };
    CFoo(Bar);
};

CFoo::CFoo(Bar barIn)
{
    barIn;
}
Run Code Online (Sandbox Code Playgroud)


GMa*_*ckG 7

这段代码很好:

/* static */ class Myclass
{
  public:    
     enum encoding { BINARY, ASCII, ALNUM, NUM };
     Myclass(Myclass::encoding); // or: MyClass( encoding );
     encoding getEncoding() const;
}; // semicolon

Myclass::Myclass(Myclass::encoding enc)
{    // or:     (enum Myclass::encoding enc), they're the same
     // or:     (encoding enc), with or without the enum
}

enum Myclass::encoding Myclass::getEncoding() const
//or Myclass::encoding, but Myclass:: is required
{
}

int main()
{
    Myclass c(Myclass::BINARY);
    Myclass::encoding e = c.getEncoding();
}
Run Code Online (Sandbox Code Playgroud)

使用您获得的真实代码和错误更新您的问题,以便我们可以解决实际问题而不是假问题.(给我们一个*可编辑的*示例来重现您的问题.)