如果我是正确的,类中的静态常量成员定义如下:
// header file, inside a class definition:
static const SomeType my_const;
// cpp file
const ClassName::SomeType my_const = SomeType(5.0);
现在我不明白为什么分类器不存在于 cpp 文件中。可以这么说,签名不匹配,我不想强迫症太多,但这背后的原因是什么?
出于好奇,当我添加静态时,这是我收到的错误消息:
error C2720: 'static ' storage-class specifier illegal on members
最佳答案
static
是一个大量重载的关键字,它至少有 4 种不同的含义,还有更多需要注意。难怪你会感到困惑。
您的第一行不只是站在标题中,而是在一个类中。 (请编辑代码)。在一个类中,您可以有普通成员,也可以有在实例之间共享的成员。标记 static
是选择。
在 namespace 范围内,关键字的含义完全不同,即将链接变为内部链接。作为在该范围内进行的定义 ios,您不得添加静态的“版本”。
关于c++ - 为什么header中的static const在代码文件中定义为const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17147346/