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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage