关于在类中存储未知数据的问题
我如何在 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
如何做或者为什么用另一种方式做
我的问题是是否有解决此问题的通用方法以及好的解决方案是什么。如果我的想法不正确,并且有另一种技术或位置可以为我的目标存储数据(下一段)请告诉我。
可选的背景信息和上下文
这种需求背后的原因是我正在编写一种基于组件的游戏引擎。有组件和系统。系统可以是标题菜单或世界级别,我可以根据需要向其中添加任意数量的组件。每个游戏刻度,系统都会对其所有组件调用指定的方法。组件是例如Physics, Terrain, Draw, Characters, Sound, ... 提到的未知数据结构是组件应该能够存储在其系统中的内容。组件几乎是静态的,它的状态取决于它使用的存储。该存储系统(与事件管理器一起)用于组件之间的通信。
编辑:
通过研究我发现我想要的是Data Centered 或 Data Oriented 在软件设计中。现在我有一个起点可以对这个话题做更多的研究。谢谢 Michael Anderson 的回答,我可能会用到它。
最佳答案
您可能想使用 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");
关于c++ - 让类存储未知数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12927444/