簡體   English   中英

QString:非文字類型的靜態數據成員的inclass初始化

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

在尋找解決方案時,我嘗試了constconstexprstatic各種組合,所有這些顯然都行不通。

我無法就非文字,

一些幫助將不勝感激!

您無法在頭文件中初始化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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM