如果我是正确的,那么类中的静态常量成员定义如下:
// header file, inside a class definition:
static const SomeType my_const;
// cpp file
const ClassName::SomeType my_const = SomeType(5.0);
现在我不明白为什么cpp文件中没有分类器。签名不符合这么说,我不想过分强迫OCD,但这背后的原因是什么?
对于好奇,当我添加静态时,这是我收到的错误消息:
error C2720: 'static ' storage-class specifier illegal on members
答案 0 :(得分:3)
static
是一个大量重载的关键字,至少有4种不同的含义,需要注意的更多。难怪你很困惑。
你的第一行不只是站在标题中,而是在一个类中。 (请编辑代码)。在类中,您可以拥有普通成员,以及实例之间共享的成员。标记static
是选择。
在命名空间范围内,关键字意味着完全不同的东西,即它将链接转换为内部。作为在该范围内制作的定义ios,您不能添加静态的“版本”。
答案 1 :(得分:0)
const SomeType ClassName :: my_const = SomeType(5.0);
答案 2 :(得分:0)
我强烈怀疑是 -
const ClassName::SomeType my_const = SomeType(5.0);
或const SomeType ClassName::my_const = SomeType(5.0);
用非常简单的术语来说: -
'static'是一种存储类型,它不是数据类型或修饰符,这里只是告诉编译器这应该在对象的所有实例中共享,这意味着只创建一个实例。我们在签名中不包含存储类型。