繁体   English   中英

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

[英]QString : inclass initialization of static data member of non-literal type

大家好

请注意:C ++新手

我已经承担了一个项目,尝试发现c ++的各个方面,目前我正忙于创建动态库。 类名misc

在我的misc.h ,我在其他对象之间有几个QString

问题:

错误:

misc.h:17:错误:静态数据成员'QString的类内初始化

非文字类型的其他Mis :: googleDNS”

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

  ^ 

class::static_variable我所知,从另一个类调用静态对象是由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各种组合,所有这些显然都行不通。

我无法就非文字,

一些帮助将不胜感激!

您无法在头文件中初始化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");

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

初始化QString最佳方法是使用QStringLiteral

// in my.h file:
class Misc
{
public:
    static QString s_myQString;
};

// in my.cpp file:
QString Misc::s_myQString = QStringLiteral("String...");

这样,在字符串内容更改之前,我们避免动态分配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM