C++ QString:inclass初始化非文本类型的静态数据成员
大家好 <请注意:C++新手> /P> 我已经着手一个项目来尝试发现C++的所有方面,目前我正忙于创建一个动态库。类名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完成的。因此,我尝试同样的方法: 以下是我的问题的基本
misc
在mymisc.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...");