c++ - 让类存储未知数据

标签 c++ list class types member

关于在类中存储未知数据的问题

我如何在 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/

相关文章:

c++ - 派生类中的运算符<< C++

list - 使用列表谓词在 Prolog 中查找交集

java - 贾弗斯按顺序比较列表

python - 使用 Python 列表理解有点像 zip

java - Android:类问题

c++ - 未定义的 vtable 引用

reactjs - 将 react-charts 功能组件示例转换为类组件

c++ - 波斯语的 QString

c++ - 如何在 C++ 中获取 Windows 资源管理器的完整路径

c++ - CImg库在编译时返回对 `__imp_SetDIBitsToDevice'的 undefined reference