C++中的默认枚举可见性

Ben*_*den 2 c++ enums visibility

我有一个看起来像这样的课程:

namespace R 
{
class R_Class 
{
   enum R_Enum
   {
       R_val1,
       R_val2,
       R_val3
   }
private:
   // some private stuff
public: 
  // some public stuff
}
}
Run Code Online (Sandbox Code Playgroud)

我正在使用自动化测试工具进行单元测试.编译器声称我的测试工具无法访问R :: R_Class :: R_Enum类型.

我可以轻松访问类似定义的类中的值:

namespace S
{
class S_Class
{
public:
   enum S_Enum
   {
       S_val1,
       S_val2,
       S_val3
   }
}
private:
   // some private stuff
public: 
  // some public stuff
}
Run Code Online (Sandbox Code Playgroud)

是否需要为C++中的枚举提供明确的可见性指令?如果没有给出,他们默认为私人吗?保护?

Mar*_*k B 9

enums遵循类中的可见性,就像属性,方法,嵌套类或其他任何东西一样.您需要将其public用于外部可见性.

这样,类可以拥有自己的私有方法使用的私有枚举,而不会将enum值暴露给外部世界.