常量数据的初始化值

Posted

技术标签:

【中文标题】常量数据的初始化值【英文标题】:Initilizing value for a const data 【发布时间】:2010-09-13 07:16:38 【问题描述】:

以下代码在我的 c++ 类中

static const  QString ALARM_ERROR_IMAGE ;

我要启动

ALARM_ERROR_IMAGE          = "error.png";

是否可以将error.png 初始化为static const QString ALARM_ERROR_IMAGE 想把它放在课堂上

【问题讨论】:

【参考方案1】:

一个类的静态变量必须在命名空间范围内显式定义一次(无论它们是否进一步被 cv 限定)。

在.cpp文件中(例如<ClassName>.cpp),在全局命名空间中(假设你的类在全局命名空间中),定义如下(假设QString中存在适当的构造函数)

注意:我在下面的定义中错过了“const”

const QString <ClassName>::ALARM_ERROR_IMAGE = "error.png";

$9.4.2/2 - “声明一个 其类中的静态数据成员 定义不是定义,可能 是不完整的类型 cv 限定的 void。的定义 静态数据成员应出现在 包含成员的命名空间范围 类定义。在定义中 命名空间范围,名称 静态数据成员应合格 通过其类名使用 :: 运算符。”

【讨论】:

我可以像你说的那样在课外写吗 我的课是abc.cpp,可以写QString ::ALARM_ERROR_IMAGE = "error.png";如果我喜欢这将是不变的 你需要写成QString abc::ALARM_ERROR_IMAGE = "error.png";。是的,一旦初始化,就不能修改了。它是恒定的。【参考方案2】:

不可能留在里面。 只允许在类或结构中初始化 const 静态整数数据成员。

【讨论】:

以上是关于常量数据的初始化值的主要内容,如果未能解决你的问题,请参考以下文章

变量常量

变量常量

TensorFlow函数初始值生成函数

常量表达式 & constexpr

用另一个数组的值初始化一个本地静态常量数组

C#变量常量数据类型数据转换