常量数据的初始化值
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 静态整数数据成员。
【讨论】:
以上是关于常量数据的初始化值的主要内容,如果未能解决你的问题,请参考以下文章