在运行时向对象添加任意类型
|
在我们的应用程序中,我们有一个在运行时接收属性的对象。例如,向对象添加浮点数:
my_object->f(\"volume\") = 1.0f;
检索体积的方法相同:
cout << my_object->f(\"volume\") << endl;
在内部,这由字符串到其各自类型的映射表示。每种类型都有其自己的访问方法和映射。看起来像这样:
map<string, float> my_floats;
map<string, int> my_ints;
map<string, void *> my_void_pointers;
哦,可怕的ed3ѭ。有时我们需要向该对象添加类或函数。我们没有为每种可能的类型都有单独的地图,而是选择了void *
地图。我们遇到的问题是清理。当前,我们保留void *
指向的这些“悬挂”对象的每种类型的列表,并在必要时在这些单独的列表上调用清除函数。
我不喜欢使用ѭ3以及正确清理所需的所有额外注意。有什么更好的方法可以在运行时将任意类型存储在对象中,可以通过字符串映射访问,并且仍然可以通过析构函数进行自动清理吗?
没有找到相关结果
已邀请:
3 个回复
炬卤遁蝎变
久纳禾澎
窝头菊