我从来没有听说过这可能,但希望它可能会问。
对于具有比这更多的成员变量的类:
class A
{
public:
SomeOtherClass* s;
int i;
int j;
A() {}
A(const A& soc): s(soc.s->Clone()), i(soc.i), j(soc.j) {}
};
我总是要记住,如果我向类添加另一个变量int k
,我也必须将它添加到初始化列表k(soc.k)
,有时也在析构函数中。
我不得不添加/删除成员变量很多次,忘记初始化列表中的复制并在调试时发现遗漏了很久,这真的很烦人。
因此,我想知道是否有一种语法/逻辑可以通过它找出一个类的成员变量列表及其类型,以便我可以遍历它们并决定需要复制哪些在复制ctor中,哪些需要深度复制?
我不明白为什么 C++ 的创建者不能包含这样的工具,因为除了虚拟成员之外,变量的内存位置是连续的,而且它们的类型也是已知的。即使它们是外部的或虚拟的,类型和大小也会在运行时已知。那不应该吗?
最佳答案
C++ 中没有反射,因此您需要一个外部库来执行此操作。 C++ 的创建者没有实现此功能,因为它意味着性能损失,而性能是 C++ 的主要目标之一。
关于c++ - 查找类的成员变量列表及其类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386404/