gpt4 book ai didi

c++ - QString : inclass initialization of static data member of non-literal type

转载 作者:行者123 更新时间:2023-11-28 01:54:57 27 4
gpt4 key购买 nike

大家好

请注意:c++ 新手

我已经开始了一个项目来尝试发现 c++ 的所有方面,目​​前我正忙于创建一个动态库。类名 misc

在我的 misc.h 中,我有几个 QString 和其他对象。

问题:

错误:

misc.h:17: error: in-class initialization of static data member 'QString

Misc::googleDNS' of non-literal type

static 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);
//...

在寻找解决方案时,我尝试了 constconstexprstatic 的各种组合,但显然都没有奏效。

我找不到对非字面意思的可靠解释,

一些帮助将不胜感激!

最佳答案

How can I initialize the static QString member of the class?

best way to initialize the QString正在使用 QStringLiteral:

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

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

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

关于c++ - QString : inclass initialization of static data member of non-literal type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41552366/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com