如何使用匿名命名空间在.cpp文件中设置静态成员变量?

时间:2013-08-04 22:19:05

标签: c++

我有一个包含静态成员变量的类,我想在.cpp文件中使用匿名命名空间初始化它,就像我在链接中看到的那样:Where to put constant strings in C++: static class members or anonymous namespaces

但是我收到一个错误,说明当前的成员费率无法在范围内定义。为什么呢?

//A.h
namespace myclass
{
class A
{
   private:
      static double rate;
};
}


//A.cpp
namespace myclass
{
   namespace{
      double A::rate = 99.9;
  }

}

1 个答案:

答案 0 :(得分:1)

你不能:它已经是一个合格的班级成员:

//A.cpp
namespace myclass
{
   double A::rate = 99.9;
}

会做的。由于声明,static已经坚持了。

混淆可能是因为static有不同的含义:

但是,static类成员与可见性(内部/外部链接)无关。相反,它必须与存储持续时间