yaml-cpp Einfachste Methode zum Durchlaufen einer Karte mit undefinierten Werten
Ich möchte jeden Knoten in einer Karte erhalten, ohne die Schlüssel zu kennen.
Mein YAML sieht so aus:
characterType :
type1 :
attribute1 : something
attribute2 : something
type2 :
attribute1 : something
attribute2 : something
Ich weiß nicht, wie viele "Typen" deklariert werden und wie diese Schlüssel heißen. Deshalb versuche ich, die Karte zu durchlaufen.
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>());
}
Der vorherige Code bereitet beim Kompilieren keine Probleme, aber zur Ausführungszeit erhalte ich den folgenden Fehler: terminate wird aufgerufen, nachdem eine Instanz von ausgelöst wurdeYAML::TypedBadConversion<CharacterType>
Ich habe auch versucht, einen Subindex anstelle des Iterators zu verwenden, wobei derselbe Fehler aufgetreten ist.
Ich bin sicher, dass ich etwas falsch mache, ich kann es einfach nicht sehen.