访问命名空间中的枚举

Sum*_*din 0 c++ enums namespaces

在标题中我有这样的设置

namespace NS {
    typedef enum { GOOD, BAD, UGLY }enum_thing;
    class Thing {
        void thing(enum_thing elem);
    }
}
Run Code Online (Sandbox Code Playgroud)

当然还有另一个与该标题一起使用的cpp文件.然后我有一个包含main()的线程cpp文件.在这个cpp文件中,我使用该枚举传递给方法thing().

using namespace NS;
int main() {
    Thing t();
    t.thing(BAD);
}
Run Code Online (Sandbox Code Playgroud)

当然,我从G ++那里得到其他错误,说没有声明BAD.有关如何克服此错误的任何帮助?

Nic*_*ott 5

在纠正示例代码中的许多小语法错误后,它编译对我来说很好.检查您是否正确拼写了名称.你能以NS :: BAD的身份访问枚举吗?也许你没有包括正确的标题?确保你 #include "FileWithEnum.h"在顶部.

namespace NS {
    typedef enum { GOOD, BAD, UGLY }enum_thing;
    class Thing {
        public:
            void thing(enum_thing elem){}
    };
}


using namespace NS;
int main() {
    Thing t;
    t.thing(BAD);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

自己测试一下:http: //codepad.org/Uw0XjOlF