Есть ли способ автоматизировать манипулирование кодом c для большого числа классов или структур в c ++? - PullRequest
1 голос
/ 23 апреля 2020

В моем коде много class ов и struct сек. И я хотел бы иметь возможность манипулировать ими в автоматическом режиме. Кодовое манипулирование struct foo1 в struct foo2 выглядит следующим образом:

Не изменено struct foo1:

struct foo1 {
  int i = 3;
  bool b = true;
  std::string str = "Hi";
  char c = 'c';
};

Изменено struct foo2:

struct foo2 {
  int i = 3;
  bool b = true;
  std::string str = "Hi";
  char c = 'c';

  std::tuple<int*,bool*,std::string*,char*> members = std::make_tuple(&i, &b, &str, &c); 
};

Я ищу автоматический способ сделать class es и struct s "умнее" с именованными членами tuple. Это манипулирование кодом должно быть возможным в автоматическом режиме. Есть идеи, как этого добиться?

Редактировать 1:

Именованные элементы tuple необходимо обновлять каждый раз, когда объект типа foo2 копируется или перемещается. Это делает манипулирование кодом еще более сложным.

Edit 2:

Спасибо aschepler за указание на то, что члены должны быть членами function :

static constexpr std::tuple<int foo2::*, bool foo2::*, std::string foo2::*, char foo2::*> members() { return std::make_tuple(&foo2::i, &foo2::b, &foo2::str, &foo2::c); }
...