将结构复制到其他结构

时间:2018-10-12 21:28:19

标签: c++ c memcpy

我想知道是否存在一种将结构复制到其他结构的优雅方法,其中第二个结构与原始结构基本相同,但没有最后一个字段。

例如,

struct A {
    int a;
    int b;
    int c;
};
struct B {
    int a;
};

struct A v1;
struct B v2;

memcpy(&v2, &v1, sizeof(v2));

实现我想要的功能? v2具有最初在v1中找到的“ a”值的地方?

谢谢

1 个答案:

答案 0 :(得分:1)

如果仅复制B期望的字节数,而不是复制A中的所有字节,则将实现所需的结果:

memcpy(&v2, &v1, sizeof(v2)); // remember that the first argument is the destination

但是,这不是好的编码样式。通过这个最小的代码示例,很难说清,但是您可能希望A从B继承,以便您可以转换两者而不必物理复制内存。

否则,这将更容易,更干净:

b2.a = v1.a;