C++ 编译错误-类中的枚举

C++ 编译错误-类中的枚举,c++,enums,C++,Enums,我有一个编译错误,我不知道为什么。 我在.h文件和.cpp文件上有enum声明,假设在stringToEnum函数中使用它 这是.cpp文件 #include "A.h" A::A(void) { } A::~A(void) { } values A::stringToEnum (string inputString) { if (inputString == "string1") return val1; if (inputString == "string

我有一个编译错误,我不知道为什么。 我在.h文件和.cpp文件上有enum声明,假设在stringToEnum函数中使用它

这是.cpp文件

#include "A.h"

A::A(void)
{
}

A::~A(void)
{
}       

values A::stringToEnum (string inputString) {
    if (inputString == "string1") return val1;
    if (inputString == "string2") return val2;
}
这是头文件

class A
{
public:

    A(void);
    ~A(void);


private:
    enum values{
        val1,
        val2,
        val3,
        val4
    };
    values stringToEnum (string inputString);
};
这是我得到的错误:

1>c:\users\documents\visual studio 2010\projects\A.cpp(25): error C2143: syntax error : missing ';' before 'A::stringToEnum'
1>c:\users\documents\visual studio 2010\projects\A.cpp(25): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\documents\visual studio 2010\projects\A.cpp(25): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\documents\visual studio 2010\projects\A.cpp(25): error C2556: 'int A::stringToEnum(std::string)' : overloaded function differs only by return type from 'A::values A::stringToEnum(std::string)'
1>          c:\users\documents\visual studio 2010\projects\A.h(22) : see declaration of 'A::stringToEnum'
1>c:\users\documents\visual studio 2010\projects\A.cpp(25): error C2371: 'A::stringToEnum' : redefinition; different basic types
1>          c:\users\documents\visual studio 2010\projects\A.h(22) : see declaration of 'A::stringToEnum'
我很乐意得到一些指导

谢谢

由于值包含在中,您需要限定名称:

A::values A::stringToEnum (string inputString) {
//...
由于值包含在中,因此需要限定名称:

A::values A::stringToEnum (string inputString) {
//...

谢谢类中的每个新类型成员都应该由className::newType使用?在定义中,您可以只使用值和val1等。如果您想强制键入values::val1,请将值更改为C++11枚举类。谢谢!类中的每个新类型成员都应该由className::newType使用?在定义中,您可以只使用值和val1等。如果您想强制键入values::val1,请将值更改为C++11枚举类。