3

如果我是正确的,类中的静态常量成员定义如下:

// 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
4

3 回答 3

3

static是一个重载的关键字,它至少有 4 种不同的含义,还有更多需要注意。难怪你会感到困惑。

你的第一行不仅仅是站在标题中,而是在一个类中。(请编辑代码)。在一个类中,您可以拥有普通成员,以及在实例之间共享的成员。标记那static是选择。

在命名空间范围内,关键字的含义完全不同,即将链接变为内部链接。作为在该范围内定义的 ios,您不得添加静态的“版本”。

于 2013-06-17T12:24:47.870 回答
0

const SomeType ClassName::my_const = SomeType(5.0);

于 2013-06-17T13:08:20.357 回答
0

我强烈怀疑是不是——

const ClassName::SomeType my_const = SomeType(5.0);

或者const SomeType ClassName::my_const = SomeType(5.0);

用非常简单的话来说:-

“静态”是一种存储类型,它不是数据类型或修饰符,这里只是告诉编译器应该在对象的所有实例中共享它,这意味着只创建它的一个实例。我们不在签名中包含存储类型。

于 2013-06-17T13:52:45.327 回答