我有这个结构,到目前为止我一直在使用没有错误:
union Vector3f
{
struct{ float x,y,z ; } ;
float elts[3];
} ;
有一些重载的构造函数,但是我将复制构造函数和赋值operator=
保留到它们的默认实现中。
Vector3f a,b ;
b=a; //works as expected, with x,y,z copied over from a to b
我刚刚想到默认成员分配应该执行b.elts=a.elts
,因为elts
是指针类型,应该导致b.elts
错误地指向a.elts
。< / p>
但是,显式尝试b.elts=a.elts
失败并出现编译错误
数组类型float [3]不可分配
这有什么值得担心的吗?我的代码是正确的还是我应该明确写一份副本ctor和作业operator=
?