【问题标题】: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 想把它放在课堂上

【问题讨论】:

    标签: c++ visual-c++ qt qt4


    【解决方案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 静态整数数据成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多