1. 程式人生 > >C++靜態成員的初始化,特別是QMap

C++靜態成員的初始化,特別是QMap

寫一個靜態成員類,當作全域性變數用,結果QMap型別的怎麼搞都不行,最後終於弄明白了,寫的這裡備忘:

Util.h內容

#ifndef UTIL_H_
#define UTIL_H_
#include <QString>
#include <QUrl>
#include <QHttpResponseHeader>
#include <QMap>
#include <QVariant>

class Util: public QObject {
Q_OBJECT
public:
 Util();
 virtual ~Util();
public:
 static QMap<QString, QMap<QString, QVariant> > cropsMap;
 static QMap<QString, QString> cookieMap;
 static QString uin;//QQ號碼
 static QString uname;//QQ名字
public:
 static void setCookie(QString key, QString value);
 static void setCookie(const QHttpResponseHeader &);
 static QString getCookie();
 static QString getUrlPath(QUrl);
 static QString getFarmKey(uint);
 static QString Util::getRemainingTime(uint plantingTime, uint needfulTime,
   int timeoffset, int *remainingSec);
};

#endif /* UTIL_H_ */
其中靜態成員變數必須在Util.cpp中初始化

#include <QDateTime>
#include "Util.h"
#include "md5.h"
#include <QList>
#include <QPair>
#include <qDebug>

QMap<QString,QMap<QString,QVariant> > Util::cropsMap;//初始化靜態成員變數
QMap<QString,QString> Util::cookieMap;
QString Util::uin;
QString Util::uname;

Util::Util() {
 // TODO Auto-generated constructor stub

}

Util::~Util() {
 // TODO Auto-generated destructor stub
}

相關推薦

C++類的靜態成員初始詳細講解

記住:通常靜態資料成員在類宣告中宣告,在包含類方法的檔案中初始化.初始化時使用作用域操作符來指出靜態成員所屬的類.但如果靜態成員是整型或是列舉型const,則可以在類宣告中初始化!!! 複製程式碼 程式碼如下: #include <iostream> using namespace std;

C++ 之靜態成員 初始必須在定義外

如題 一般情況下,C++定義一個類會用2個檔案,“class.h”和 “class.cpp”, 使用的時候一般會讓函式在.h中宣告,然後.cpp中定義,而成員資料一般在建構函式或者.h中就初始化了。

C++類成員初始順序問題

今天剛把買了一個月的劍指offer這本書翻閱一下,看到一個簡單的舉例。說應聘C++崗位的不知道成員變數初始化順序!大冬天的背後竟冒出了一絲冷汗,因為我也不知道,所以就上網查了一下,將學到的知識記錄如下。 主要參考部落格: 問題來源: 由於面試題中,

C++靜態資料初始總結

靜態資料具有全域性變數一樣的共享性質,但是在面嚮物件語言中,使用全域性變數會破壞其程式設計中的資訊隱蔽原則,這與面向物件的封裝特點是相悖的。為了實現同一個類的多個物件之間的資料共享,C++提出了靜態資料成員的概念。 在一個類中,實現靜態成員的方法是在資料型別定義時說明為s

C# WPF DateTime 初始賦值 DateTime 如何賦值

 DateTime dt = new DateTime(2008, 5, 1, 8, 30, 52,001); //正確  DateTime dt = new DateTime();   dt.Year = 2008;//錯誤  Year 是隻讀屬性,DateTime 

C++靜態成員初始特別是QMap

寫一個靜態成員類,當作全域性變數用,結果QMap型別的怎麼搞都不行,最後終於弄明白了,寫的這裡備忘: Util.h內容 #ifndef UTIL_H_#define UTIL_H_#include <QString>#include <QUrl>#in

C++構造函數對類成員變量初始使用初始列表和構造函數內部直接賦值 的差別

初始化列表 不能 構造 調用 ron 二次 art size strong 初始化和賦值對內置類型的成員沒有什麽大的差別,像任一個構造函數都能夠。但有的時候必須用帶有初始化列表的構造函數: (1) 成員類型是沒有默認構造函數的類。若沒有提供顯式初始化時,則編譯器隱式

c++靜態成員變量初始時不受訪問權限控制

靜態成員 col stat name code new clas getname return 1、要在類外初始化,const 成員變量才能在類內初始化 2、初始化在類外,而不在main函數內 1 class A{ 2 private: 3 string n

C++模板類中靜態資料成員初始

首先看程式碼,靜態資料成員分為兩種情況,第一種不依賴模版型別引數,第二種依賴模版型別引數。 template <typename T> class TestTemStatic{ public: static int knownTypeV

C++普通變數、C++靜態成員變數、C++成員常量、C++靜態成員常量的初始方法

    最近複習C++的一些知識,遇到了一個我比較容易混淆、傻傻分不清的知識點,那就是C++的變數的型別初始化或賦初值,大致有普通成員變數、靜態成員變數、成員常量這三種,還有一種組合的靜態成員常量。    看到這幾種資料成員時很尷尬,經常就把某兩種搞混了,所以為了方便和好理解

c++中對類中私有成員中的靜態變數初始

1.static成員的所有者是類本身和物件,但是多有物件擁有一樣的靜態成員。從而在定義物件時不能通過建構函式對其進行初始化。 2.靜態成員不能在類定義裡邊初始化,只能在class body外初始化。 3.靜態成員仍然遵循public,private,protected訪問準

java 中類初始構造方法靜態成員變數靜態塊的載入順序

1、編譯和執行概念要搞清:編譯即javac的過程,負責將.java檔案compile成.class檔案,主要是型別、格式檢查與編譯成位元組碼檔案,而載入是指java *的過程,將.class檔案載入到記憶體中去解釋執行,即執行的時候才會有載入一說。 2、類的載

C++靜態成員變數的初始

需要注意的是:靜態資料成員不能在類中初始化,一般在類外和main()函式之前初始化,預設時初始化為0。 1.static成員的所有者是類本身,但是多個物件擁有一樣的靜態成員。從而在定義物件是不能通過建構函式對其進行初始化。 2.靜態成員不能在類定義裡邊初始化,只能在clas

C#靜態常量默認初始但仍然為null

span arr 靜態常量 項目 tps 不清楚 ask .sh ons 最近在做一個項目的時候,發現標記了ThreadStatic特性的靜態變量,即使默認已經初始化,但在使用的時候仍然可能為NULL,以下是一段測試代碼: (不清楚ThreadStatic的可以點擊這htt

c++類 用冒號初始對象(成員初始列表)

函數 ace end -1 box 技術分享 對象 mage stream c++類 用冒號初始化對象(成員初始化列表) 成員初始化的順序不同於它們在構造函數初始化列表中的順序,而與它們在類定義中的順序相同 #include<iostream> int n=0

指定類型的成員XX”不支持實體LINQ。只有初始成員單位和實體導航性能的支持。

where 創建 pos var != sql 支持 bre spec The specified type member ‘DeleteFlag‘ is not supported in LINQ to Entities. Only initializers, entit

C#數據沒初始使用會報錯可以初始null

rgs send protect null new 報錯 tar sender ted protected void Page_Load(object sender, EventArgs e) {   string[] A;      if (B== 0)

Java類的各種成員初始順序如:父子類繼承時的靜態代碼塊,普通代碼塊,靜態方法,構造方法,等先後順

依次 成員初始化順序 main class 實例對象 變量 影響 {} 所在 class B extends A ,然後A類也就是父類裏面有靜態代碼塊,普通代碼塊,靜態方法,靜態成員變量,普通成員變量,普通方法。子類也是這樣,然後繼承之後,關於程序打印輸出的結果。涉及到Ja

C語言 單鏈表實現佇列(初始入隊出隊元素個數隊首元素是否為空)

單鏈表實現佇列: 連結串列為空的判斷條件:pQueue->pFront==pQueue->pRear或者若結構體中存在數的個數時,判斷pQueue->size==0,即元素個數為0 標頭檔案:佇列.h #pragma once #include<

C++成員初始列表

C++類成員初始化列表 C++型別定義 C++建構函式的初始化列表定義 C++建構函式執行的兩個階段 為什麼使用初始化列表 C++裡面哪些東西必須放在初始化列表裡面 成員變數的初始化順序 這邊文章主要學習C++