Ich versuche eine Yamlconfig-Klasse mit Yaml-CPP zu machen. Eines seiner Hauptmerkmale ist, dass ihre Benutzer im Stil von Bukkit, einer Minecaft -API, unterschiedliche Knoten in einem Baum von Karten (z. B. eine Karte, die Karten enthält, die Karten enthält, aber auf variierende Tiefen) über eine Zeichenfolge wie "MAP1.MAP2.MAP3.MAP3.MAP3.KEALUE" enthält. Ich habe die Suchfunktion im folgenden minimalen Beispiel geschrieben, aber obwohl sie konstant gekennzeichnet ist, ist die Zeichenfolge, die jedes Mal aufgerufen wird, anders und scheint nur die Karte zu sein, die den Endwert für den vorherigen Aufruf enthält. Dies zeigt ein Problem, dass sich M_ROOTNODE zu
ändern scheint. Was ist los? Das stimmt jedoch nicht mit der Funktion der Funktion konstant. Als solches habe ich jetzt keine Ahnung, was los ist. Ich habe versucht, auch über meine Suchmaschine ähnliche Probleme zu finden, aber nichts, was auftauchte
Code: Select all
#include
#include
#include
#include
#include
class YamlConfig{
public:
YamlConfig(const std::string &yaml);
YAML::Node seek(std::string_view key, bool create) const;
private:
YAML::Node m_rootNode;
static std::vector split(std::string_view input, char delimeter);
};
YamlConfig::YamlConfig(const std::string &yaml){
m_rootNode = YAML::Load(yaml);
}
YAML::Node YamlConfig::seek(std::string_view key, bool create) const {
auto splitKey = split(key, '.');
YAML::Node current = m_rootNode;
YAML::Emitter emitter;
emitter