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
上的类或命名空间名称
答案 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
,直接使用枚举名称和相应的命名空间。
答案 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.