美好的一天
请注意: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);
//...
在搜索解决方案时,我尝试了const
,constexpr
,static
的各种组合,这些组合显然都没有效果。
我无法找到非文字的含义,
一些帮助将不胜感激!
答案 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
这样我们就可以避免动态分配,直到字符串内容发生变化。