Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: support serialize and deserialize class with private member fields #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ding-hai
Copy link

hi @ukabuer
This pr is used to support support serialize and deserialize the class with private member fields.
All we need to do is just providing setter and getter function for those private member fields.
such as

class User {
private:
  Gender gender = Gender::Male;
public:
  int age = 1;
  double height = 180.0;
  double value = 1.0;
  
  Gender get_gender() const {return gender;}
  bool set_gender(const Gender& new_gender)  {
    gender = new_gender; 
    return gender == Gender::Male;
  }
  double get_value() const {return value;}
  void set_value(double new_value)  { value = new_value;}
  
  double get_height() const {return height;}
  void set_height(double new_value)  { height = new_value;}
};

namespace seria {
template <> auto register_object<User>() {
  return std::make_tuple(member("age", &User::age, 32),
                         member("gender", &User::set_gender,  &User::get_gender, Gender::Female),
                         member("value", &User::set_value, &User::get_value),
                         member("height", &User::set_height, &User::get_height, 175.5));
}
}

you can get more info from the unit test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant