【发布时间】:2016-07-28 20:02:14
【问题描述】:
如果我在命名空间中有一个带有私有静态成员的类:
namespace A {
class T {
public:
//functions
private:
static bool a;
static unsigned int b;
我正在另一个文件中对这个类进行单元测试,例如:
namespace {
bool A::T::a = false;
unsigned int A::T::b = 1;
/* tests declaring an instance of A...*/
我收到来自 Clang 的错误:
error: cannot define or redeclare 'a' here because namespace '' does not enclose namespace 'T'
error: cannot define or redeclare 'b' here because namespace '' does not enclose namespace 'T'
我已经查看了有关静态私有成员的其他答案以及需要在类的声明所在的位置声明它们,这就是我相信我在这里所做的,但错误仍然让我无法理解。
【问题讨论】:
-
namespace {是匿名的。声明的定义是在namespace A中提出的,不能在那里完成,句号。
标签: c++ static namespaces