0

私は を持っていて、はパラメータ、およびを持つ構造体であるQMapと定義しました。構造体で定義されたパラメータ値にアクセスしたい。次のコードを書きましたが、エラーが表示されます。QMap<QString,ModelVariables>ModelMapModelVariablesvaluerefvalueID

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

エラー: '.' の前にプライマリ式が必要です トークン。

4

2 に答える 2

0

MVariables["HXT_V_FT04"]ModelVariables一致するキーがある場合、オブジェクトを返します"HXT_V_FT04"。それ以外の場合は、デフォルトでそのオブジェクトを構築して返します。あなたが使用できるように

MVariables["HXT_V_FT04"].value
于 2015-06-26T11:06:31.377 に答える
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;

編集:あなたが提供したタイプ名などに基づいて、次のようなものが必要だと思います:

// 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;
于 2015-06-26T11:15:31.213 に答える