查找类及其类型的成员变量列表?

Nav*_*Nav 7 c++ copy-constructor

我从来没有听说过这是可能的,但希望可能会这样想.
对于具有比此更多成员变量的类:

class A
{
 public:
  SomeOtherClass* s;
  int i;
  int j;
  A() {}
  A(const A& soc): s(soc.s->Clone()), i(soc.i), j(soc.j) {}
};
Run Code Online (Sandbox Code Playgroud)

我总是要记住,如果我int k在类中添加另一个变量,我还必须在初始化列表中添加它k(soc.k),有时也在析构函数中添加它.我不得不多次添加/删除成员变量,忘记初始化列表中的复制并在调试时发现遗漏的确很烦人.

因此,我想知道是否有一个语法/逻辑,通过它我可以找到一个类的成员变量列表及其类型,以便我可以迭代它们并决定哪些需要在副本中复制ctor以及哪些需要被深深复制?

我不明白为什么C++的创建者不能包含这样的工具,因为除了虚拟成员之外,变量的内存位置也是连续的,它们的类型也是已知的.即使它们是extern或virtual,也会在运行时知道类型和大小.那不应该可能吗?

dar*_*mos 11

C++中没有反射,因此您需要一个外部库来执行此操作.C++的创建者没有实现这个功能,因为它意味着性能损失,性能是C++的主要目标之一.

  • 根据谷歌的说法,是的(XCppRefl 在搜索结果中名列前茅)。不过,从来没有尝试过这些。您可能想单独问一个关于哪个库最好的问题。 (2认同)