0
我在标题中有一个enum
:匿名命名空间无法访问头
namespace somespace
{
namespace internal
{
class SomeClass
{
public:
typedef enum
{
kNone = 0,
kKaka = 1,
}SomeEnum;
}
}
}
在CPP,我们有时会使用匿名命名空间的辅助功能。
但我不能在.cpp
文件访问SomeEnum
。这是为什么? 我怎样才能解决这个问题而不污染internal
命名空间?
你的'typedef枚举'定义是一个C-主义。在C++中,你可以简单地写'enum SomeEnum {kNone = 0,kKaka = 1};'。由于C++ 11,'enum类SomeEnum {kNone = 0,kKaka = 1};'也是首选。 –
这段代码也看不到'SomeClass'。显然这里没有显示相关的东西。 –
顺便提一下,枚举类型中第一个枚举数的默认值为0,其他任何枚举数的默认值都比其前面的枚举数的值多一个。因此上面的'SomeEnum'定义中的'= 0'和'= 1'是多余的。在某些情况下,定义具有特定值的枚举数是合适的;在许多情况下,这些值并不重要,默认值工作得很好。 –