让A类店未知数据(Let a Class store unknown Data)

2019-10-17 07:36发布

发行有关的类Storeing未知数据

我怎么能提供C ++一类是能够存储任意数量的变量每任何类型的? 从里面,我想读,添加,修改和删除这些数据的类之外。

所以我要寻找也许是一个列表,其中的数据类型可以改变。

例如用法可以看怎么样

Class Object();
Object->Storage->Create("position", "float");    // create
Object->Storage->Write("position", 42.0f);       // write
int Result = Object->Storage->Read("position");  // read
Object->Storage->Delete("position");             // delete

如何做到这一点,或者为什么做它以另一种方式

我的问题是,如果有这个问题,有什么好的解决方案是一种常见的做法。 如果我的想法是不正确的,并有另一种技术或地方来存储数据,我的目标(下段),请告诉我。

可选的背景信息和上下文

这背后需要的原因是,我写了一种基于组件的游戏引擎。 有组件和系统。 系统可能是标题菜单或世界水平,我可以,我希望尽可能多的组件添加到它。 每场比赛打勾,系统调用在其所有组件的指定方法。 组件是如物理,地形,绘图,文字,声音,......所提到的未知数据结构是一个组件应该是怎样能够在其系统存储。 该组件几乎是静态的,其状态依赖于它所使用的存储。 该存放系统(与事件管理器一起)使用的组件之间进行通信。

编辑:

通过研究,我想通了,我要的是所谓的数据中心面向数据的软件设计。 现在我有一个起点,做更多的研究这个话题。 谢谢迈克尔·安德森的回答,可能是我将使用。

Answer 1:

你可能想使用boost::any对这种事情。

您的代码看起来就像这样:

std::map<std::string,boost::any> object;
object["position"] = 42.0f;

//This will throw if the type is wrong
int Result = boost::any_cast<float>(object["position"]);
object.erase("position");


Answer 2:

是否标准模板库(STL) - 更具体地说,使用地图的 - 不是你的工作需要?

http://en.cppreference.com/w/cpp/container/map

您可以使用地图来保存它们要么值:

1)一个“CustomObject”,这是所有可能的变量/对象类型的联合。

2)一个指针到实际的对象/变量。



文章来源: Let a Class store unknown Data