私はパーサーを書いていて、型情報を std::map に保存することにしました。[] 演算子を使用してアクセスすると、列挙型の値が常に 0 になります。マップは次のように宣言されます。
enum type {Bool, Bool_a, Int_4, Inta_4, Int_8, Inta_8, Float_s, Floata_s, Float_d, Floata_d, Ch_s, Ch_a, Str, Invalid};
class kparse_ret{
...
std::map<std::string, type
...
} ret_data;
そして、次のようなものを使用して設定されます
ret_data.type_list[itemname] = Int_4;
( itemname は std::string です)
私が抱えている問題は、
ret_data.type_list[data_name]
私は常に Bool または 0 を取得します (ここでも、data_name は std::string です)。itemname と data_name は、それぞれのコンテキストに到達したときにまったく同じ内容を持っていることがわかっています。さらに、 itemname を使用して再度アクセスすると、設定した値が取得されます。