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

时间:2011-03-18 19:43:32

标签: c++ class enums

我在课堂定义中有以下枚举:

static class Myclass {
     ...
  public:    
     enum encoding { BINARY, ASCII, ALNUM, NUM };
     Myclass(Myclass::encoding);
     ...
}

然后在方法定义中:

Myclass::Myclass(Myclass::encoding enc) {
    ...
}

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

5 个答案:

答案 0 :(得分:8)

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

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

CFoo::CFoo(Bar barIn)
{
    barIn;
}

答案 1 :(得分: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();
}

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

答案 2 :(得分:2)

删除static。一般来说,提到确切的错误将有助于您获得更好的答案。

答案 3 :(得分:1)

class Myclass {
     ...
public:    
     enum encoding { BINARY, ASCII, ALNUM, NUM };
     Myclass(enum Myclass::encoding);
     ...
}

Myclass::Myclass(enum Myclass::encoding enc) {
     ...
}

刚刚忘记了参数中的enum关键字。

答案 4 :(得分:0)

见:

C++ pass enum as parameter

根据范围的不同,您可以参考它。在你自己的课堂上你说

Myclass(encoding e);