c++ - 访问命名空间中的枚举

标签 c++ enums namespaces

在标题中我有这样的设置

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

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

using namespace NS;
int main() {
    Thing t();
    t.thing(BAD);
}

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

最佳答案

在更正示例代码中的许多小语法错误后,它对我来说编译得很好。检查您是否正确拼写了名称。你能以 NS::BAD 的形式访问枚举吗?也许您没有包含正确的 header ?确保你有 #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;
}

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

关于c++ - 访问命名空间中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199429/

相关文章:

php - 通过字符串从枚举中获取大小写

C++ 双重枚举值赋值

c++ - 如何在 C++ 中正确使用 std::mutex 而不会出现死锁和/或竞争?

C++ - Vector 中的对象无法修改

java - 从代码访问XML枚举值

java - 在 Java 中使用 switch 比较字符串与枚举值

java - Metro & StreamBuffer 命名空间错误——我理解正确吗?

c++ - 命名空间、类和编译器顺序

c# - 命名空间——有多深就是太深

c++ - 对非类型模板和返回元组的函数的简单混合感到困惑