gpt4 book ai didi

c++ - 在C++中复制两个相似的结构

转载 作者:行者123 更新时间:2023-11-30 01:57:06 25 4
gpt4 key购买 nike

我想在 C++ 中复制两个相似的结构。考虑以下三种结构。

struct Dest_Bio
{
int age;
char name;
};

struct Source_Bio
{
int age;
char name;
};

struct Details
{
int id;
Dest_Bio* st_bio; //Needs to be populated with values from Source_Bio
};
  • 我在“Source_Bio”结构中填充了值
  • 我想将 Source_Bio 中的这些值复制到“详细信息”结构中的 st_bio 中。
  • 我不想为 Dest_Bio 创建成员

我尝试了以下方法。它编译得很好,但在运行时程序会崩溃。

Source_Bio st_ob;
st_ob.age = 5;
st_ob.name = 't';
Details st_a;
st_a.id = 1;
st_a.st_bio = (Dest_Bio*) malloc(sizeof(Dest_Bio));
memcpy((struct Dest_Bio*)&st_a.st_bio, (struct Source_Bio*)&st_ob,sizeof(Dest_Bio));

我怎样才能做到这一点?提前致谢

最佳答案

简单的方法可能是这样的:

struct Dest_Bio { 
int age;
char name; // should this really be a string instead of a single char?

Dest_Bio(Source_Bio const &s) : age(s.age), name(s.name) {}
};

Details st_a;

st_a.id = 1;
st_a.st_bio = new Dest_Bio(st_ob);

更好的是,您可能应该只删除 Dest_BioSource_Bio 并将它们替换为 Bio 并完成它。您几乎肯定还想用某种智能指针替换您的 Dest_Bio *st_bio —— 原始指针几乎是自找麻烦。或者,只需在 Details 对象中嵌入一个 Bio 对象(可能是首选)。

关于c++ - 在C++中复制两个相似的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19127546/

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