C++ 将设置/获取请求映射到C++;类别/结构变化
我在想什么是最好的方法。基本上,我有一个接收外部请求的系统,以便在模型中设置/获取值。问题是,我的模型包含在C++类中,这些类可以嵌套,而请求是简单的(key,value)对。 例如:C++ 将设置/获取请求映射到C++;类别/结构变化,c++,oop,C++,Oop,我在想什么是最好的方法。基本上,我有一个接收外部请求的系统,以便在模型中设置/获取值。问题是,我的模型包含在C++类中,这些类可以嵌套,而请求是简单的(key,value)对。 例如: struct Foo { void setX(int x); int getX() const; struct Boo { void setY(float y); float getY() const; }: }; 如果我收到一个请求,对给定的元
struct Foo {
void setX(int x);
int getX() const;
struct Boo {
void setY(float y);
float getY() const;
}:
};
如果我收到一个请求,对给定的元素e说set(y,21)
,那么我需要执行的操作将根据foo和boo是否已经存在而有所不同。必须考虑每个属性的不同可能性,最终会编写大量代码
在重新发明轮子之前,我想知道是否已经有一个库或一个众所周知的C++技术,允许将这种扁平动作映射成C++结构(可以嵌套)的一种通用方式的变化。
谢谢Boost为此提供了属性映射
get(map, key)
put(pmap, key, val)
对于左值/可读映射,您还可以获得索引器样式的访问
pmap[key];
pmap[key] = newval; // if not const/readonly
您可以使用现有的属性映射适配器:
和identity\u property\u map
type\u identity\u property\u map
function\u property\u map
迭代器属性映射
shared\u array\u property\u map
关联属性映射
const\u associative\u property\u map
vector\u property\u map
ref\u property\u map
static\u property\u map
transform\u value\u property\u map
compose\u property\u map
put("age",properties,fred,new_age);
put("gpa",properties,fred,new_gpa);
请注意,age
和gpa
可以存储在任何地方(甚至可能需要web请求),但是访问的差异被位于两者之间的PropertyMap接口抽象掉了
我的答案样本:
- 使用BiMap和Boost多索引容器存储属性