有没有办法选择我想要分配的一个实例的成员而无需手动分配它们

NoS*_*tAl 3 c++ class

我假设我有Class C成员x,y,z,t,u,v

C c1,c2;
//... 
c1.x = c2.x;
c1.u = c2.u;
c1.v = c2.v;
Run Code Online (Sandbox Code Playgroud)

这段代码可以压缩,以便我可以列出x, u, v吗?

编辑:动机是我有一个更新的类,但一些值不再计算,因为它们保持不变.

Dan*_*nas 5

代码不能用任何合理的方法压缩(即避免使用宏和模糊机制).

但是,它可以封装在您的类的赋值运算符中.重载"="运算符并将所有这些赋值放在其正文中.那你只需要做c1 = c2.

当然,如果你的语义不是赋值的语义,你可以创建一个传统的方法AssignSomeFields(const C& other).然后打电话c1.AssignSomeFields(c2);.