【发布时间】:2013-10-01 23:13:44
【问题描述】:
我想在 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 中的这些值复制到 'Details' 结构中的 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));
我怎样才能完成这项工作?提前致谢
【问题讨论】:
-
您的
memcpy指向st_a.st_bio的地址,但这已经是一个指针。取出&。 -
这是我每天在大型 C 源代码库中使用的东西,从该库生成多个应用程序。它是变化和更新问题的持续来源。这似乎是一个切碎的示例,您似乎没有理由将 C++ 转换为 C,所以我很好奇您为什么要这样做。
-
您可能应该只使用
Bio而不是Source_Bio和Dest_Bio,并且类的实例是源还是目标是基于您的代码的上下文。