如何将静态 const 变量保留为类的成员

Posted

技术标签:

【中文标题】如何将静态 const 变量保留为类的成员【英文标题】:How to keep static const variable as a member of a class 【发布时间】:2010-09-13 07:57:14 【问题描述】:

我想保留一个静态 const 变量作为类的成员。 是否可以保留以及如何初始化该变量。

有人这样说帮助了

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

Initilizing value for a const data

我试过这样

在 CPP 课上我写了

static  QString ALARM_WARNING_IMAGE ;

在构造函数中我写

ALARM_WARNING_IMAGE        = "warning.png";

但不工作...请提供一些提示帮助

【问题讨论】:

【参考方案1】:

在源文件中的任何函数外写:

const QString ClassName::ALARM_WARNING_IMAGE = "warning.png";

这种结构也有效:

const QString ClassName::ALARM_WARNING_IMAGE("warning.png");

标题:

class ClassName 
  static const QString ALARM_WARNING_IMAGE;
;

另外,不要在构造函数中写任何东西。这将在每次实例化 ClassName 时初始化静态变量。这不起作用,因为变量是 const 并且可以说是个坏主意。 consts 只能在声明期间设置一次。

【讨论】:

【参考方案2】:

基本思路如下:

struct myclass
 //myclass() : x(2)      // Not OK for both x and d
 //myclass()x = 2;       // Not OK for both x and d
 static const int x = 2;   // OK, but definition still required in namespace scope
                               // static integral data members only can be initialized
                               // in class definition
     static const double d;    // declaration, needs definition in namespace scope,
                               // as double is not an integral type, and so is
                               // QSTRING.
     //static const QString var; // non integral type
;

const int myclass::x;             // definition
const double myclass::d = 2.2;    // OK, definition
// const QString myclass::var = "some.png";

int main()

【讨论】:

有什么理由评论var?这似乎暗示它无效,当它有效时。 @Mike Seymour:因为我没有 QString 定义。【参考方案3】:

试试:

QString ClassName::ALARM_WARNING_IMAGE = "warning.png";

【讨论】:

任何需要在C++类中声明 如果你让它保持不变,你必须同时标记 declaration (在类中)和 definition (这就是这个答案所显示的) 作为const. 看我的回答。它应该足够详细,以了解它是如何工作的【参考方案4】:

只允许在类或结构中初始化 const 静态整数数据成员。

【讨论】:

以上是关于如何将静态 const 变量保留为类的成员的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 const auto 变量在 range-for 循环中为类的 const 成员函数编译?

statuc和const

C++ staticconst和static const 以及它们的初始化

类的成员

static方法 和 const方法

PHP5中Static和Const关键字