我需要将结构分配给另一个类似的结构。只是名字不同。如果它是相同的名称,我们可以直接使用=
(赋值)运算符。
我不想使用memcpy()
,因为它会复制比特。
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;
}
但是我收到了编译错误。
错误:转换自"首先"到非标量类型"第二"请求。
不确定是否可能?
答案 0 :(得分:6)
您需要使用构造函数
struct second s=f;
如:
struct second{
int i;
char c;
second(first const& f) : i(f.i), c(f.c) {}
...
};
要使用赋值运算符,请使用:
second s; // No need to use struct in C++
s = f;
BTW,operator=
函数的正确接口和实现应该是:
second& operator=(first const& f)
{
i=f.i;
c=f.c;
return *this;
}
答案 1 :(得分:1)
使用如下。然后它会工作。或者创建复制构造函数。
#include <iostream>
using namespace std;
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;
s=f;
}