如何将static const变量保持为类的成员

时间:2010-09-13 07:57:15

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

我想将静态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";

但是没有工作......请提供一些提示来帮助

4 个答案:

答案 0 :(得分:10)

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

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

部首:

class ClassName {
  static const QString ALARM_WARNING_IMAGE;
};

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

答案 1 :(得分:4)

这是基本的想法:

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(){
}

答案 2 :(得分:0)

尝试:

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

答案 3 :(得分:0)

只允许在类或结构中初始化const static integral data成员。