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