C++ 如何生成接收枚举的函数
我的CDrawView类上的枚举是C++ 如何生成接收枚举的函数,c++,function,enums,C++,Function,Enums,我的CDrawView类上的枚举是 class Shapemaker { public: static Shape * shapeCreate(CDrawView::shape sh); }; 当我在上调用Shapemaker::shapeCreate(current_shape)时,我得到错误c2653CDrawView:不是Shapemaker.h上的类或命名空间名称,如果它是另一个类的enum成员,则可以将其引用为类的名称::Color,但它必须公开可见: enum shape{li
class Shapemaker
{
public:
static Shape * shapeCreate(CDrawView::shape sh);
};
当我在上调用
Shapemaker::shapeCreate(current_shape)
时,我得到错误c2653CDrawView
:不是Shapemaker.h
上的类或命名空间名称,如果它是另一个类的enum
成员,则可以将其引用为类的名称::Color
,但它必须公开可见:
enum shape{line, rect, elli};
shape current_shape;
假设你有以下几点:
void function(nameoftheClass:Color input);
采用该枚举的函数如下所示:
class C {
public:
enum E {
HERP,
DERP
};
};
这最终都是名称空间的问题。再看一下这个问题的答案,明确地说,您不能在函数的参数列表中使用关键字
enum
,直接使用带有适当名称空间的enum名称
我试图传递颜色变量enum,但它给了我一个编译错误,表示“nameofclass”不是类或名称空间 您需要在使用前放置声明,这意味着您需要正确的头文件: MyClass.h
void foo(C::E e) {
// do stuff with e
}
class MyClass {
public:
enum Color {
Red,
Green,
Blue
};
};
MyOtherClass.h
void foo(C::E e) {
// do stuff with e
}
class MyClass {
public:
enum Color {
Red,
Green,
Blue
};
};
这可能是最简单的做法:
#include "MyClass.h" // This is required.
// Now you can use MyClass::Color freely.
现在,如果您的编译器没有将Shapemaker识别为类名,那么我认为您在声明Otherclass之前没有包含它的头文件。使用
void函数(int)代码>或无效函数(类的名称::颜色)代码>我试图传递颜色变量enum,但它给了我一个编译错误,说明“nameofclass”不是类或名称空间。您能告诉我们包含enum的类吗?包括它可能被包装的任何名称空间或类@andre@user2221404:否,我们希望查看nameofclass
或CDrawView
。我尝试这样做,但当我传递枚举时,我收到一条消息,说该类不是类或命名空间“nameofclass”不是类或命名空间。我将参数作为函数(nameofenum)传递,它给出了一个可能的结果,然后您可以添加定义enum
的类的完整声明,我们可能会更有用我添加了发生在我身上的事情的完整声明@dan.lecocqsay我将E声明为em。当我执行foo(em)时当我试图编译时,它说C类不是一个名称空间或类问题是当我试图调用函数时,我不断收到一个错误,说该类不是一个类或名称空间你能检查我所做的新编辑吗,如果你不介意,如果你知道它为什么不起作用,你介意解释一下吗?我想你忘了在使用静态方法的文件中包含CDrawView
的标题。你能检查一下我添加的@Magtheridon96的新编辑吗。我在顶部包含了CDrawView.h,但当我调用fun()时,它里面包含了什么。颜色为红色、黄色或趣味(红色)或枚举颜色的实例。趣味(色彩);你们都可以使用fun(颜色(红色));或色霉色;fun(mycolor);