yaml-cpp La forma más fácil de iterar a través de un mapa con valores no definidos
Me gustaría obtener cada nodo en un mapa sin conocer las claves.
Mi YAML se ve así:
characterType :
type1 :
attribute1 : something
attribute2 : something
type2 :
attribute1 : something
attribute2 : something
No sé cuántos "tipos" se declararán o cuál será el nombre de esas claves. Por eso estoy tratando de recorrer el mapa.
struct CharacterType{
std::string attribute1;
std::string attribute2;
};
namespace YAML{
template<>
struct convert<CharacterType>{
static bool decode(const Node& node, CharacterType& cType){
cType.attribute1 = node["attribute1"].as<std::string>();
cType.attribute2 = node["attribute2"].as<std::string>();
return true;
}
};
}
---------------------
std::vector<CharacterType> cTypeList;
for(YAML::const_iterator it=node["characterType"].begin(); it != node["characterType"].end(); ++it){
cTypeList.push_back(it->as<CharacterType>());
}
El código anterior no da ningún problema al compilar, pero en el momento de la ejecución recibo este error: terminar llamado después de lanzar una instancia deYAML::TypedBadConversion<CharacterType>
También he intentado usar un subíndice en lugar del iterador, obteniendo el mismo error.
Estoy seguro de que estoy haciendo algo mal, simplemente no puedo verlo.