我得到了两个结构体。这两个结构体的某些部分具有完全相同的元素类型(和名称)。
我如何给一个赋值给另一个?
如下所示:
struct X
{
struct {
int a = 0;
int b = 0;
} z;
int c = 0;
};
struct Y
{
int a = 0;
int b = 0;
};
int main()
{
X x{ 1,2,3 };
Y y;
// I know i can do:
y.a = x.z.a;
y.b = x.z.b;
// Is there a simple way like:
// y = x.z;
}
我研究了memcpy
,但在我的真实的情况中,X
在长度上要复杂得多,动态得多。
3条答案
按热度按时间f87krz0w1#
在您的示例中,可以将代码重写为:
现在它 * 是 * 相同的结构。
yzxexxkh2#
有没有像这样简单的方法:y = x.z;
Y
与decltype(X::z)
不同。因此,不进行任何进一步调整是不可能的。一种方法是为
Y
提供copy assignment operator重载,Y
可以接受decltype(X::z)
类型,并对Y
进行赋值。现在你可以写了
See a live demo in godbolt.org
mnemlml83#
这两个变量不是同一类型的,也许你真的希望它们是同一类型的,那么写
y = x.z;
的“简单”方法是:或