我在标题中有一个enum
:
namespace somespace
{
namespace internal
{
class SomeClass
{
public:
typedef enum
{
kNone = 0,
kKaka = 1,
}SomeEnum;
}
}
}
在cpp中,有时我们使用带有辅助函数的匿名名称空间。
#include <somespace/internal/SomeClass.h>
using somespace::internal;
namespace
{
bool helpMe(SomeEnum& foo) //does not recognize the enum in the header
{
}
}
void SomeClass::memberMethod
{
}
但是我无法访问
SomeEnum
文件中的.cpp
。这是为什么?如何解决这个问题而又不污染
internal
命名空间? 最佳答案
SomeEnum
的作用域是声明它的类名。要使用它,您需要SomeClass::SomeEnum
。假定SomeClass
在您拥有的范围内是可访问的。如果不是,那么您需要somespace::internal::SomeClass::SomeEnum
关于c++ - C++中的匿名 namespace 无法访问 header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35226862/