[英]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.