我在课堂定义中有以下枚举:
static class Myclass {
...
public:
enum encoding { BINARY, ASCII, ALNUM, NUM };
Myclass(Myclass::encoding);
...
}
然后在方法定义中:
Myclass::Myclass(Myclass::encoding enc) {
...
}
这不起作用,但我做错了什么?如何正确传递枚举成员,这是在成员方法(以及其他方法)的类中定义的?
答案 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)