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

标签 c++

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

但我收到一条错误消息,指出无法在范围内定义当前成员(member)费率。为什么?

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


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

}

最佳答案

你不能:它已经是一个类的合格成员了:

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

会做。由于声明的缘故,static 已经存在。

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

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

关于c++ - 如何使用匿名命名空间在.cpp 文件中设置静态成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18048163/

相关文章:

c++ - 在 Qt 中包含 CMake 所需的库

c++ - 鼠标点击后获取输入 SFML

c++ - 检查指针是否指向堆上分配的内存

c++ - 为具有大量元素的类实现赋值运算符

c++ - 正则表达式奇怪的行为

c++ - 链接器错误 : undefined reference to

c++ - 检查所有可变参数模板参数的特征

c++ - 使用#define 的最大数组大小

c++ - 启动应用程序时出现 DLL 问题

c++ - 将数组转换为 vector 的最简单方法是什么?