Невозможно прочитать конфигурационный файл во время итерации - PullRequest
0 голосов
/ 27 мая 2019

У меня проблемы с доступом к итератору при попытке чтения из файла конфигурации.Мой код:

void requestPLC::write(QMap <QString, QVariant> map)
{

QMap<QString, QVariant>::iterator i;

for (i = map.begin(); i != map.end(); ++i)
    {
        mConfig->reqPLC->datatype.value(map[i]);
        // do something here
    }
}

Что я хочу сделать, так это перебрать мою карту и выбрать соответствующее значение из файла конфигурации.Моя ошибка выглядит следующим образом:

нет соответствия для 'operator []' (типы операндов: 'QMap' и 'QMap :: iterator') mConfig-> reqPLC-> datatype.value (map [я]);^

Я знаю, что это вызвано тем, что datatype.value (map [i]) является итератором, но я не могу найти способ избежать этого.Нужно ли приводить здесь итератор или что-то в этом роде?

Ответы [ 2 ]

2 голосов
/ 27 мая 2019

Доступ к key, value из QMap с помощью итератора может быть выполнен с помощью класса итератора

В вашем случае:

void requestPLC::write(QMap <QString, QVariant> map)
{

    QMap<QString, QVariant>::iterator i;

    for (i = map.begin(); i != map.end(); ++i)
    {
        auto map_value = i.value();
        mConfig->reqPLC->datatype.value(map_value);
        // do something here
    }
}
0 голосов
/ 27 мая 2019

Вам нужно дать ключ от итератора, а не сам итератор.В STL я бы сделал i-> сначала для отображения итератора, чтобы получить доступ к ключу, и я использую ключ для доступа к карте, используя оператор [].

...