从 C++ 中的 JSON 输入创建特定类/子类的新实例的可扩展方式

问题描述

我正在寻找一种基于 JSON 输入加载特定类/子类类型的方法。例如,我有以下 JSON 文件

"type" : "RenderVertices"
"RenderComponent": {
  "vertex": {
    "xcoords" : [0,1,0]
    "ycoords" : [0,1]
  
  }

  "texture": {
    "name" : "testtex"
    "texcoordsx" : [0,0]
    "texcoordsy" : [0,1]
  }
  
  "color" : {
    "color_r": [0,0]
    "color_g": [0,0]
    "color_b": [0,0]
    "color_a": [0,0]
  }
  
  "type": "quads"
}

在我的程序中,我有两个类,一个基类和一个子类

class RenderComponent;

class RenderVertices : public RenderComponent

我最终将拥有大量继承自 RenderComponent 的类,并且我希望能够基于 JSON 文件中的“类型”说明符构造一个特定的对象子类(在本例中为 RenderVertices)。我了解如何使用带有 switch 语句的某种工厂函数来执行此操作,但这需要为我创建的每个子类类型添加一个新条目,如果可能,我希望避免这种情况。实现此目标的最具可扩展性的方法是什么(可扩展性是指创建的每个新子类所需的代码修改最少)?

我正在使用 nlohmann::json 来解析我的 JSON 文件 (https://github.com/nlohmann/json)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)