|
1
2
我也做了类似的事情。 如果属性对于类的所有实例都是通用的,那么对描述属性的类进行单独的元描述。然后,每个实例提供一个简单的Boost::Any类型的向量(我不使用Boost::Any,而是使用我们自己编写的类似的东西)。 如果每个实例的属性可以不同,那么为每个实例创建一个映射,其中键是一个原子,值是boost::any(或类似的值)。在窗口下,原子是一种字符串的数值表示。首先使用字符串指示“属性名”,然后将其转换为原子,并将其用作映射中的键。使用数字原子而不是字符串将加快在映射中查找属性的速度(前提是您将原子值保留在某个位置,并且不需要每次需要属性值时都执行字符串到原子的查找)。 不要将属性用作存储类数据成员的常规方法。如果这样做,调试将成为一场噩梦,因为很难看到类中的实际值是什么。同时也不可能设置监视点。 仅使用这些属性来存储不能放入普通数据成员中的内容,例如: -您事先不知道这些属性(例如,它们可能是特定于客户的) -您不想在两个类之间引入依赖项(甚至按名称)。 |
|
2
1
看一看 dynamic property maps 在Boost属性图中。
|