c++ - 如何以多态方式无限嵌套对象

标签 c++ polymorphism nested

我有一个 Config包含 <string, string> 的类map数据,用于保存配置键和值。有时,我不知道在编译时什么时候,我希望能够访问该对象内的一个键作为该对象的另一个(子)实例 - 我希望能够在理论上无限嵌套.

未解析的数据看起来像这样

someKey     = someVal
keysnkrates = "itsastring"
# comments

keyConfig = (
    subKey  = 1
    another = 3.14159
    subKeyConfig = (
        ...inf...
    )
)

otherVals = ...

我怎样才能在不诉诸 hack-y 类 C 方法的情况下解析这样的东西?我不想处理原始指针,也不想处理空值,但是我想出的唯一解决方案是添加一个指向 Config 的指针。类,如果它是 !nullptr那么它就是一个子配置对象。

最佳答案

只需使用普通的 STL 贴图。您认为(至少)一些 JSON 和 XML 解析器如何在 C++ 中工作?

struct Config{
  Data data;
  std::map <std::string,Config> children;
}

现在内嵌套值如你所愿:

Config config;
config.children["My Inner Config "] = Config(<my data>);
config.children["My Inner Config "].children["My inner inner config"] = Config(<more data>);

关于c++ - 如何以多态方式无限嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32290267/

相关文章:

c++ - 如果嵌套 extern "C"会发生什么?

c++ - 在文件中从右向左写入数据?

c++ - Qt rand() 不能正常工作

javascript - AngularJS 如何实现多态/依赖注入(inject)(最佳实践)

c# - 编译时多态/重载

Java继承与多态

linux - 嵌套的 if/then/elseif 在 bash 中如何工作?

c++ - 下面代码的算法复杂度是多少

c++ - 枚举窗口?

用于嵌套 Div 标签的 PHP RegEx