我的需求是将相似的结构分配给另一个,只是名称不同。 如果它的名字相同,我们可以直接使用=(赋值)。 我不想使用memcopy,因为它会复制位。是否可以分配两种不同类型的结构?
struct first{
int i;
char c;
}
struct second{
int i;
char c;
//we can overload assignment operator to copy field.
void operator = (struct first& f)
i=f.i;
c=f.c;
}
int main()
{
struct first f;
f.i=100;
f.c='a';
struct second s=f;
}
但我得到编译错误。 错误:请求从“第一个”转换为非标量类型“第二个”。
不确定是否有可能。
在这里,你不分配。您正在复制对象。所以复制构造函数需要 –
初始化!=赋值。写一个'second'的构造函数,将'first'作为参数,或者写一个转换运算符,'second','first'。 –
你可以使用cast-through-a-union成语,也可以确保编译器不会做任何可能会破坏你的代码的别名优化。或者只是memcpy,非常暴力。 –