如何在不同的结构中复制具有相同名称的成员?

时间:2015-02-04 09:42:48

标签: c++ c data-structures

我有两种不同的结构。两者都有一些相同类型的成员和名。

如何一次性复制所有匹配的成员?

struct a{ int i, int j};
struct b{ int j, int k};

我想执行a=b这种操作,b.j被复制到a.j。 同样明智的是,如何复制这些匹配成员?

2 个答案:

答案 0 :(得分:3)

只需创建一个赋值运算符,然后复制你想要的所有内容

struct a{ int i; int j; };
struct b{ 
void operator=(const a & other)
{
    j = other.j;
}
int j; 
int k;
};

然后你可以写

a one;
b two;
two = one;

答案 1 :(得分:3)

由于存在一些相同类型的匹配成员,因此解决方案是将它们打包到普通类型。

struct c{ int i, int j};
struct a{ c common, int k, int l, ..., double u};
struct b{ c common, int a, int b, ..., float u, int v};

a one;
b two;

one.common = two.common;

如果因为你不能以这种方式更改代码是不可能的,那么我建议写一些复制函数,但不是赋值运算符,因为一段时间之后你或其他人可能并且可能会错误地使用该赋值,认为它复制所有成员。

void copySharedMembersOfAB( a&, a const& b)
{
    a.i = b.i;
    a.j = b.j;
}