c++ - C++访问类成员

标签 c++ class-members

<分区>

很长一段时间后,我重新开始使用 C++ 编写代码,想知道是否有一种方法可以快速访问类的数据成员以进行操作。

假设一个类中有大约 10 个数据成员,它重载了一堆运算符(在重载 operator= 时想到了这一点)。现在您想要向类中添加/减去一些数据成员。 有没有一种通用的方法来完成这个而不必去个别功能并改变它们?我正在考虑在一种循环结构中遍历一个类的所有成员的可能性。

最佳答案

由于 C++ 中还没有内置反射(目前),您必须在某处列出所有成员。避免您一遍又一遍地执行此操作的一种方法是定义一个 for_each_member 方法,该方法将每个成员传递给某个仿函数:

template <class F>
void for_each_member(F f);

现在您可以轻松地对所有成员应用任意操作,并且您只需为每个类维护一个成员列表。

运行示例:http://coliru.stacked-crooked.com/a/c813fc73c5519ee0

如果您想对不同的成员子集执行不同的操作,您必须找到一种方法将它们分开。您可以按类型执行此操作(如示例所示),或者您可以另外将某种标识符传递给 for_each_member 中的仿函数。

这里我使用宏将成员及其名称传递给仿函数:http://coliru.stacked-crooked.com/a/5a59c027e25c33fb

关于c++ - C++访问类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37443779/

相关文章:

c++ - 如何在构造函数中初始化 C++ 对象成员变量?

python - 如何从 Python 中的类内部访问类方法

c++ - 与子构造函数同名的继承类成员

c++ - ActiveMQ 3.8.3 (CPP) priorityBackup 不工作的问题

c++ - linux 中的 wmain 或 _tmain 替代品是什么?

c++ - 关于在构造函数中将临时绑定(bind)到引用成员的虚假警告

c++ - 在 C++ 中将字符串/字符转换为类成员/方法

c++ - 在类中使用未声明的标识符

c++ - 返回类型中 && 和 no ref 的区别

python - 如何使用 lldb 调试 C++ pybind11 模块?