2017-08-11 37 views
0

我使用的建築在我的對象QList:當我使用調試器QList,使用附加的對象,失去靜態成員

void clsXMLnode::appendChild(clsXMLnode* pobjChild) { 
assert(pobjChild != NULL); 
mlstChildren.append(pobjChild); 
// ... 

QList<clsXMLnode*> mlstChildren; 

在我的方法追加子節點單步驟我可以看到pobjChild具有它應該與之關聯的所有靜態數據,但是附加到'mlstChildren'的節點沒有任何靜態成員。使用調試器,我可以看到'pobjChild'仍然是正確的,而'mlstChildren',雖然它具有相同的子節點指針地址,但它的內容與'pobjChild'的內容不匹配,爲什麼?

編輯:
這似乎是在調試器中的一個錯誤,我修改了appendChild方法如下:

void clsXMLnode::appendChild(clsXMLnode* pobjChild) { 
assert(pobjChild != NULL); 
int intNewIdx = mlstChildren.length(); 
mlstChildren.append(pobjChild); 
clsXMLnode* pobjCheck = mlstChildren.at(intNewIdx); 
// ... 

我可以在中pobjCheck內容的內容相匹配的調試器看到pobjChild,並且所有靜態成員都是完整的,但如果在調試器中擴展mlstChildren,而類地址匹配pobjChild,則靜態數據的內容不會。

+0

「靜態數據」是什麼意思?你的意思是靜態成員變量?但這些實際上並不是任何特定對象的成員,而是該類的所有對象(實例)都具有這些對象。 –

+0

@Someprogrammerdude,我有類中定義的靜態指針的負載,例如:const char clsXMLnode :: mcszAutosize [] =「autosize」;靜態數據應該對類的所有實例都是通用的,但由於某種原因,在查看列表時,調試器中的靜態數據顯示爲「」 – SPlatten

+0

@Someprogrammerdude,請參閱問題編輯,看起來像調試器中的錯誤。 – SPlatten

回答