我在我的类定义中有以下枚举:
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)
这不起作用,但我做错了什么?如何正确传递枚举成员,这是在成员方法(以及其他方法)的类中定义的?
我不完全确定你为什么在这里使用"静态类".这个样板在VS2010中对我来说很好用:
class CFoo
{
public:
enum Bar { baz, morp, bleep };
CFoo(Bar);
};
CFoo::CFoo(Bar barIn)
{
barIn;
}
Run Code Online (Sandbox Code Playgroud)
这段代码很好:
/* 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)
使用您获得的真实代码和错误更新您的问题,以便我们可以解决实际问题而不是假问题.(给我们一个*可编辑的*示例来重现您的问题.)