2015-06-26 5 views
0

У меня есть QMap и я определил его как QMap<QString,ModelVariables>ModelMap где ModelVariables представляет собой структуру с параметрами valueref, value и ID. Я хочу получить доступ к значению параметра, определенному в структуре. Я написал следующий код, но он показывает ошибку.Доступ к значению в QMap с помощью своего ключа

float hxt_val_ft04 = ModelMap.value("HXT_V_FT04"); 

ERROR: expected primary expression before '.' token.

+0

Пожалуйста, предоставьте код, потому что он выглядит очень подозрительно. –

ответ

0

MVariables["HXT_V_FT04"] возвратит ModelVariables объект, если есть ключ согласования "HXT_V_FT04". В противном случае он будет по умолчанию сконструировать этот объект и вернуть его. так что вы можете использовать

MVariables["HXT_V_FT04"].value 
+0

Существует ключ «HXT_V_FT04», но я получаю сообщение об ошибке, ожидающее первичного выражения до «.». токен –

+0

ваш код не совпадает с моим. Вы пытались с помощью ModelMap ["HXT_V_FT04"]. Value' – UmNyobe

+0

Я получаю эту ошибку - ожидаемое первичное выражение перед '[' токеном. –

0

«предполагающих HXT_V_FT04» является ключом, значение будет структура ModelVariables. Вы можете получить доступ к этой структуре либо с квадратными скобками, что создаст значение, если оно не существует, или используйте .at(). Например

if(ModelMap.contains("HXT_V_FT04")) 
{ 
    ModelVariables mystruct = ModelMap.at("HXT_V_FT04"); 
    float hxt_val_ft04 = mystruct.value; 
} 

Это то же самое, как

if(ModelMap.contains("HXT_V_FT04")) 
    float hxt_val_ft04 =ModelMap.at("HXT_V_FT04").value; 

В качестве альтернативы:

// create mystruct if it doesn't exist 
ModelVariables mystruct = ModelMap.at["HXT_V_FT04"]; 
float hxt_val_ft04 = mystruct.value; 

Edit: Основываясь на typenames и т.д. Вы предоставили, я думаю, что нужно что-то, что выглядит например:

// declare the map 
Map<QString,ModelVariables> ModelMap; 
ModelVariables MVar; 

QString key = "HXT_V_FT04"; 
// assign to Mvar.value 
MVar.value = 10.0; 

// insert into the map 
ModelMap.insert(key, MVar); 

// do something 

// read back the value in MVar 
float val = ModelMap.at(key).value; 
//or 
float val = ModelMap[key].value; 
//or 
float val = ModelMap["HXT_V_FT04"].value; 
// or 
ModelVariables mystruct = ModelMap["HXT_V_FT04"]; 
float val = mystruct.value; 
+0

Можете ли вы опубликовать код, показывающий, как вы вставляете ModelVariables в карту, а затем пытаетесь получить к нему доступ? – mike

+0

QMap ModelMap; ModelMap определяется как QMap. Объявленный объект - ModelMap MVariables. ModelVariables - это структура с тремя значениями параметров, valueref и ID. Объектом, объявленным для структуры, является MVar. –

+0

Это объявление ModelMap. Чтобы вставить в ModelMap, вы должны иметь некоторый код, например ModelMap.insert («HXT_V_FT04», MVar); – mike