需要为一个结构体Struct RequestParam 中的成员变量赋值。
定义一个新的结构体
struct RequestSetter{
size_t offset; //成员变量的 offset
RequestFieldType type; //成员变量的类型
RequestSetter(){
}
RequestSetter(size_t field_offset, RequestFieldType field_type):
offset(field_offset), type(field_type) {
}
};
需要提前注册 Request 中成员变量的 赋值信息,例如:下面的代码 FD_INT表示成员变量的类型
param_map_[ "group" ] = RequestSetter(
myoffsetof(RequestParam,_M_group), FD_TXT);
param_map_[ "kw" ] = RequestSetter(
myoffsetof(RequestParam, _M_word), FD_TXT);
param_map_[ "orig" ] = RequestSetter(
myoffsetof(RequestParam, _M_orig), FD_TXT);
param_map_[ "filter" ] = RequestSetter(
myoffsetof(RequestParam, _M_cond), FD_TXT);
然后对Request的成员变量赋值时仅需要保证根据其注册信息就可方便的实现: 例如
<