我想知道是否有人解决了以下问题,我有两个几乎相同的结构,我需要将结构A中的值传递给结构B,它们有一个成员的差异。
示例看起来像这样我有这些结构:
struct insideA
{
double C1;
double C2;
int C3;
str C4;
};
struct insideB
{
int D3;
str D4;
};
struct A
{
insideA inA;
double c;
std::string d;
} a;
struct B
{
insideB inB;
double c;
std::string d;
} b;
现在结构A和B几乎相似但不完全相同,如果我们想象b已填充,我可以随后轻松地按成员传递值成员:
a.inA.C3 = b.inB.D3;
a.inA.C4 = b.inB.D4;
a.c = b.c;
a.d = b.d;
现在a拥有b所拥有的所有信息,我可以填充其他成员。所以我的问题是我必须使用不同的结构执行大约30或40次,其中只有结构的第一个成员发生更改,所以有没有更好的方法来执行此操作,而不是将值的struct成员传递给结构成员b个别?
答案 0 :(得分:1)
让我们使用模板!
template <struct Inside>
struct AorB
{
Inside in;
double c;
std::string d;
template <struct OtherInside>
AorB& operator=(const AorB<OtherInside>& that) {
in = that.in;
c = that.c;
d = that.d;
}
};
struct A : AorB<insideA>
{
template <struct OtherInside>
A& operator=(const AorB<OtherInside>& that) {
AorB<insideA>::operator=(that);
return *this;
}
};
struct B : AorB<insideB>
{
template <struct OtherInside>
B& operator=(const AorB<OtherInside>& that) {
AorB<insideB>::operator=(that);
return *this;
}
};
你也可以将这个想法扩展到内部类。