[英]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);
//...
在寻找解决方案时,我尝试了const
, constexpr
, static
各种组合,所有这些显然都行不通。
我无法就非文字,
一些帮助将不胜感激!
您无法在头文件中初始化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.