如何创建一个接收枚举的函数

时间:2013-03-28 21:14:09

标签: c++ function enums

class Shapemaker
{
public:
  static Shape * shapeCreate(CDrawView::shape sh);
};

我的CDrawView类上的枚举是

enum shape{line, rect, elli};
shape current_shape;

当我致电Shapemaker::shapeCreate(current_shape)时,我收到错误c2653 CDrawView:不是shapemaker.h上的类或命名空间名称

5 个答案:

答案 0 :(得分:1)

这可能是最明白的事情:

class Shapemaker{
    public:
    enum Color { //your colors here }
};

class Otherclass{
    void fun(Shapemaker::Color);
};

现在,如果你的编译器没有将Shapemaker识别为类名,那么我认为你在声明Otherclass之前没有包含它的头文件。

答案 1 :(得分:0)

如果它是其他类的enum成员,那么您可以将其引用为nameoftheClass::Color,但必须公开显示:

void function(nameoftheClass:Color input);

答案 2 :(得分:0)

说你有以下内容:

class C {
    public:
        enum E {
            HERP,
            DERP
        };
 };

采用该枚举的函数看起来像:

void foo(C::E e) {
   // do stuff with e
}

答案 3 :(得分:0)

这最终只是命名空间问题。看看这个问题的答案,最后你不能在函数的参数列表中使用关键字enum,直接使用枚举名称和相应的命名空间。

namespaces for enum types - best practices

答案 4 :(得分:0)

  

我试图传递颜色变量枚举,但它给我一个编译错误,说“nameoftheclass”不是类或命名空间

您需要在使用之前放置声明,这意味着您需要正确的头文件:

<强> MyClass.h

class MyClass {
    public:
        enum Color {
            Red,
            Green,
            Blue
        };
};

<强> MyOtherClass.h

#include "MyClass.h" // This is required.

// Now you can use MyClass::Color freely.