让班级存储未知数据
Let a Class store unknown Data
关于在类中存储未知数据的问题
如何在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
如何做到这一点或为什么以另一种方式进行操作
我的问题是,这个问题是否有共同的方法以及一个好的解决方案。如果我的想法不正确,并且还有另一个技术或位置可以存储我的目标(下一段)请告诉我。
可选的背景信息和上下文
这种需求背后的原因是我正在编写一种基于组件的游戏引擎。有组件和系统。系统可能是标题菜单或世界级别,我可以根据自己的意愿向其添加任意多的组件。每个游戏都会在其所有组件上调用指定方法。组件是例如物理,地形,绘制,角色,声音,...提到的未知数据结构是组件应该能够存储在其系统中的内容。该组件几乎是静态的,其状态取决于其使用的存储。该存储系统(与事件管理器一起)用于在组件之间进行通信。
编辑:
通过研究,我发现我想要的东西被称为数据中心或在软件设计中面向数据的。现在,我有一个开始对此主题进行更多研究的起点。谢谢迈克尔·安德森(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");
标准模板库(STL)是否 - 更具体地,使用地图 - 不适合您的需求?
http://en.cppreference.com/w/cpp/container/map
您可以使用地图保存值:
1)一个"自定义",这是所有可能的变量/对象类型的联合。
2)指向实际对象/变量的指针。
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 在c代码之间共享数据的最佳方式
- 链表,反向函数,数据结构
- 数据成员SFINAE的C++17测试:gcc vs clang
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何对点云数据进行排序
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 在运行时处理类型擦除的数据-如何不重新发明轮子