我正在寻找一种行为类似于boost::property_tree
的数据结构,但(可选)将每个值项的get/set实现留给开发人员。
您应该能够这样做:
std::function<int(void)> f_foo = ...;
my_property_tree tree;
tree.register<int>("some.path.to.key", f_foo);
auto v1 = tree.get<int>("some.path.to.key"); // <-- calls f_foo
auto v2 = tree.get<int>("some.other.path"); // <-- some fallback or throws exception
我猜你可以滥用property_tree
来做这件事,但我还没有研究过它的实现,除非我知道这是一个预期的用例,否则我会有一种不好的预感。
首先,通过调用所提供的函数来编写一个类来处理像val = tree.get("some.path.to.key")
这样的请求看起来并不太难,但我可以想象出很多特殊情况,这将使它成为一个相当庞大的库。
一些额外的功能可能是:
tree.register("some.path.config",some_handler);//调用some_handler.get("network.hostname") v= tree.get("some.path.config.network.hostname");属性树在值/键中搜索
有没有和我要找的库很接近的库?有没有人有过将boost::property_tree
用于此目的的经验?(例如,通过子类化或将特殊对象放入树中,如所描述的here)
https://stackoverflow.com/questions/30440997
复制相似问题