C++ 不确定如何在头文件中实现可访问的枚举?

C++ 不确定如何在头文件中实现可访问的枚举?,c++,enums,C++,Enums,在头文件中,我基本上有这样的内容 #ifndef blah #define blah enum DataType { TextData, IntData }; #endif 在另一个文件中我有 #include "previousheaderdefinedabove" int main(int argc, char *argv[]) { std::cout << DataType::TextData; return 1; } 然而,当

在头文件中,我基本上有这样的内容

#ifndef blah
#define blah

enum DataType
{
    TextData,
    IntData

};


#endif
在另一个文件中我有

#include "previousheaderdefinedabove"

int main(int argc, char *argv[])
{
    std::cout << DataType::TextData;


    return 1;
}
然而,当我试图编译时,我得到了

main.cpp:13:18: error: expected a class or namespace
    std::cout << DataType::TextData;

不知道我做错了什么,非常感谢您的帮助!我见过枚举被用作类,但是namespcae不够用有什么原因吗?

枚举既不是名称空间也不是类;其值与定义的范围相同。在上面的示例中,枚举值位于全局命名空间中

这意味着,大体上,你应该

std::cout << TextData;
而不是

std::cout << DataType::TextData;

枚举值的作用域不在枚举下。枚举值与枚举定义在同一范围内。要扩展Dark Falcon所说的内容,std::cout可在需要这种行为时使用,并且编译器支持C++11功能。对于这种用法,可以完全省略“数据类型”一词,并在需要时使用匿名枚举。