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

C++ C+中的枚举+;:如何作为参数传递?,c++,class,enums,C++,Class,Enums,我的类定义中有以下枚举: static class Myclass { ... public: enum encoding { BINARY, ASCII, ALNUM, NUM }; Myclass(Myclass::encoding); ... } 然后在方法定义中: Myclass::Myclass(Myclass::encoding enc) { ... } 这不管用,但我做错了什么?如何正确传递枚举成员,该成员是在成员方法

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

static class Myclass {
     ...
  public:    
     enum encoding { BINARY, ASCII, ALNUM, NUM };
     Myclass(Myclass::encoding);
     ...
}
然后在方法定义中:

Myclass::Myclass(Myclass::encoding enc) {
    ...
}
这不管用,但我做错了什么?如何正确传递枚举成员,该成员是在成员方法(以及其他方法)的类中定义的

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

请参见:

根据范围的不同,引用它的方式也不同。在你自己的课堂上你说

Myclass(encoding e);

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

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

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

卸下
静态
。通常,提及准确的错误将帮助您获得更好的答案。

此代码很好:

/* 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();
}

用你得到的真实代码和错误更新你的问题,这样我们就可以解决真实的问题而不是虚假的问题。(给我们一个重现您的问题的*可编译*示例。)

Dup of:
static class
试图实现的是什么?为什么否决票可能重复?这个代码是可靠的。代码在GCC4.5.0和msvc8中运行良好/9@JT当前位置我没有否决投票。我的理解是,这应该被打破,因为详细的类型说明符(我认为)对
enum
无效,但可能无效。不管怎样,这都不能解决他的问题,因为,假设它是有效的,它只是等同于他自己的代码:它不是必需的。@GMan,如果你详细说明为什么它不是必需的或有效的,可以吗,我已经写了很多年类似于J t的代码了。。。(似乎没有问题)@madmik3@Tom:我已经表明我的立场,那是无效的;进一步看,我误解了标准中的某些内容,所以我拒绝承认它是无效的。这是有效的。也就是说,所有这些都需要详细说明
Myclass:encoding
;这与它的类型或值无关。因此,这就等同于提问者已经发布的内容(只是详细阐述),因此不会修正任何内容。而且,这使得这个答案在技术上是错误的,因为你声称它被遗忘了,因此需要。再说一次,它不是。也就是说,我不是那种拒绝投票的人,除非它们会造成伤害,你真幸运。+1因为你将它标记为CW,我用其他选项更新了它(不需要对
enum
类型进行完全限定,因为函数声明/定义的范围是类的范围)。
/* 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();
}