iguana icon indicating copy to clipboard operation
iguana copied to clipboard

是否可以加一个set_field_value的方法,便于通过某个字符串名称来设置对象相应成员的值

Open segeter opened this issue 5 years ago • 1 comments

`template<typename T, typename V> void set_field_value(T& to_obj, std::string_view to_field_name, const V& from_v) { using M = decltype(iguana_reflect_members(to_obj)); auto tp = M::apply_impl(); constexpr auto Size = M::value(); auto index = iguana::get_index(to_field_name); tuple_switch(index, tp, [&](auto& v) { using type_v = decltype(std::declval().*std::declval<decltype(v)>()); to_obj.*v = (type_v)from_v; }, std::make_index_sequence{}); } /////////////////////////////////////////////// struct person { std::string name; int age = 0; };

REFLECTION(person, age, name);

int main() { person p; iguana::set_field_value(p, "name", "Tom"); iguana::set_field_value(p, "age", 20); return getchar(); }`

segeter avatar Sep 06 '20 13:09 segeter

看起来不错。

qicosmos avatar Sep 07 '20 05:09 qicosmos