QString:inclass初始化非文字类型的静态数据成员

时间:2017-01-09 16:21:46

标签: c++ qt qt-creator

美好的一天

请注意:c ++ newbie

我已经开始尝试发现c ++的所有方面,目​​前我正在忙着创建一个动态库。班级名称misc

在我的misc.h中,我有几个QString的其他对象。

问题:

错误:

  

misc.h:17:错误:静态数据成员'QString

的类内初始化      

非文字类型的Misc :: googleDNS

     

静态QString googleDNS = QString(“8.8.8.8”);

                                        ^

据我所知,class::static_variable从另一个类调用静态对象。因此,我尝试相同:

以下是我的问题的基本代码示例:

// misc.h

#include "misc_global.h"
#include <QString>

class MISCSHARED_EXPORT Misc
{
public:
    static QString googleDNS = QString("8.8.8.8");
    static QString ...
};

应用示例:

// netm.h

#include "../misc/misc.h"
//...

class NETMSHARED_EXPORT netm
{
    netm();
    ...
};

// netm.cpp

//...
QHostAddress ip = QHostAddress(Misc::googleDNS);
//...

在搜索解决方案时,我尝试了constconstexprstatic的各种组合,这些组合显然都没有效果。

我无法找到非文字的含义,

一些帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

您无法在标头文件中初始化QString

misc.h

class MISCSHARED_EXPORT Misc
{
public:
    static QString googleDNS;
    static QString ...
};

misc.cpp或您包含misc.h的地方执行此操作

QString Misc::googleDNS = QString("8.8.8.8");

答案 1 :(得分:1)

  

如何初始化类的静态QString成员?

best way to initialize the QString正在使用UPDATE

QStringLiteral

这样我们就可以避免动态分配,直到字符串内容发生变化。