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

C++ QString:inclass初始化非文本类型的静态数据成员,c++,qt,qt-creator,C++,Qt,Qt Creator,大家好 /P> 我已经着手一个项目来尝试发现C++的所有方面,目前我正忙于创建一个动态库。类名misc 在mymisc.h中,我在许多其他对象中有几个QString 问题: 错误: 杂项h:17:错误:静态数据成员的QString的类内初始化 杂项::非文字类型的Google DNS 静态QString googleDNS=QString(“8.8.8.8”) 据我所知,从另一个类调用静态对象是由class::static_variable完成的。因此,我尝试同样的方法: 以下是我的问题的基本

大家好

<请注意:C++新手> /P> 我已经着手一个项目来尝试发现C++的所有方面,目前我正忙于创建一个动态库。类名
misc

在my
misc.h
中,我在许多其他对象中有几个
QString

问题:

错误:

杂项h:17:错误:静态数据成员的QString的类内初始化

杂项::非文字类型的Google DNS

静态QString googleDNS=QString(“8.8.8.8”)

据我所知,从另一个类调用静态对象是由
class::static_variable
完成的。因此,我尝试同样的方法:

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

//杂项h

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

class MISCSHARED_EXPORT Misc
{
public:
    static QString googleDNS = QString("8.8.8.8");
    static QString ...
};
#include "../misc/misc.h"
//...

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

//...
QHostAddress ip = QHostAddress(Misc::googleDNS);
//...
在寻找解决方案的过程中,我尝试了
const
constepr
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成员

正在使用
qstringlateral

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

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

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

*,您不能初始化类中静态字符串对象成员,但是可以用C++ 11的初始化器初始化类的实例成员。QString m_str{“Whatever”}@AlexanderVX这样就足够了,因为当我在上面的Linux-QtCreator中测试这个概念时(我的头文件就是这样产生的),它在工作中没有问题,问题就来了windows@KGCybeX你说的是类主体中的初始值设定项?检查编译器是否是C++ 11和C++ 11在项目中或是代码> CONFIG+= C++ 11 中启用。记住,这是关于实例成员而不是静态的。
// in my.h file:
class Misc
{
public:
    static QString s_myQString;
};

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