2010-07-26 47 views
0

我有3種類型的列表,我試圖根據attribute_type打印它們。 所以根據attribute_type選擇迭代器。 問題是,如果例如attribute_type ==「pis」,if條件被執行,但是當它完成時它返回到上面的decleration:QMapIterator它(pit.item_parameters),所以這樣迭代器無效... 我應該申報嗎?QMapIterator聲明的幾個列表問題

QMapIterator<QString, IP> it(pit.item_parameters); 

if (attribute_type == "ips") { 
    QMapIterator<QString, IP> it(pit.item_parameters); 
    if (pit.item_parameters.isEmpty()) { return; } 
} 
else if (attribute_type == "variables") { 
    QMapIterator<QString, Variable> it(pit.variables); 
    if (pit.variables.isEmpty()) { return; } 
} 
else if (attribute_type == "pis") { 
    QMapIterator<QString, PI> it(pit.pis); 
    if (pit.pis.isEmpty()) { return; } 
} 

while(it.hasNext()) 
{ 
    it.next(); 
    text += it.key(); 
    text += it.value().type; 

} 

回答

0

如果你的類型IPPIVariable從具有type作爲公共成員同一類ParentClass派生,你可以聲明這樣的說法:

QMapIterator<QString, ParentClass> it;