2013-06-27 78 views
0

由於多個實例化,我想保留要寫入的靜態位置。我希望能夠從每個實例化中添加到列表中。但只保留第一個。
不知道該怎麼辦?static QStringList不保留值

適用於char類型的指針。但是,當我試圖轉換QStringList指針,我只是不斷收到錯誤:分段錯誤。

的* .h


QStringList msgList; 

*的.cpp


fncInit(){ 
    static QStringList MessageList; 
    msgList = MessageList;//keep the location constant for all new instantiations 
} 

fncBuild(QString strMessage){ 
    MessageList.append(strMessage); //if I use a pointer QStringList through out, I get Segmentation Fault. 
} 

fncPrintf(){ 
    for(int i; i < msgList.count(); i++){ 
     printf("%d) %s", i, msgList.at(i).toStdString().c_str()); 
    } 
} 
+0

我認爲你需要在頭文件中聲明你的'QStringList'爲靜態而不是函數。 –

+0

無法在標頭中創建「靜態QStringList msgList」。它在構建時出錯:ld返回1退出狀態 – jdl

+0

@jdl,我更新了我的答案 - 您應該在您的.cpp文件中添加'QStringList CLASS_NAME :: msgList;'以避免鏈接錯誤。 –

回答

0

您應該聲明在標題您msgList靜態的。不要忘記在您的.cpp文件中添加QStringList CLASS_NAME::msgList;

而在您的fncInit中,您將空的QStringList指定爲msgList,但無論如何正確的方法都在上面。

0

在你的頭文件,你需要下面的代碼:

static QStringList msgList;

這將使這個靜態變量可用於包括頭文件中的所有功能。

當您在函數內聲明msgList靜態時,您正在創建它的本地實例。