QMapIterator объявление проблемы нескольких списков - PullRequest
0 голосов
/ 26 июля 2010

У меня есть 3 типа списков, и я пытаюсь распечатать их в соответствии с attribute_type.поэтому в соответствии с attribute_type выбирается итератор.проблема в том, что если, например, attribute_type == "pis", условие if выполняется, но когда оно завершается, оно возвращается к верхнему объявлению: QMapIterator it (pit.item_parameters), поэтому итератор таким образом недопустим ... как я долженобъявить это правильно?

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;

}

1 Ответ

0 голосов
/ 26 июля 2010

Если ваши типы IP, PI и Variable происходят из одного и того же класса ParentClass, имеющего type в качестве открытого члена, вы можете объявить его следующим образом:

QMapIterator<QString, ParentClass> it;
...