gpt4 book ai didi

C++ Cast 两种不同内存布局的类型

转载 作者:行者123 更新时间:2023-12-01 14:36:35 25 4
gpt4 key购买 nike

我试图找出在不复制的情况下强制转换具有相同字段但顺序不同(甚至其中一些丢失)的两种类型的方法。
例如,如果我们有以下结构:

typedef struct Foo {
int age;
float height;
char* name;
} Foo;

typedef struct Bar {
float height;
float weight;
char* name;
int age;
} Bar;
有什么方法可以将 Bar 转换为 Foo 而无需制作中间拷贝?
Bar bar;
Foo foo;

bar = foo;
此外,是否可以使用指针转换来做到这一点?
Bar *bar;
Foo foo;

bar = &foo
提前致谢!
问候,
萨尔瓦

最佳答案

号码
这些是不相关的类型。
您可以将数据从第一个对象复制到第二个对象中,或者在某些有限的情况下,使用一些指针魔术来假装第一个对象具有第二个对象的类型。这不是其中一种情况。
幸运的是,复制整数和浮点数很便宜,并且根据您的情况,实际上可能不涉及运行时的任何事件(编译器很聪明!)。

关于C++ Cast 两种不同内存布局的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63230134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com