我有这个结构,到目前为止我一直在使用没有错误:
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
.
但是,显式尝试b.elts=a.elts
失败并出现编译错误
数组类型 float[3] 不可赋值
这有什么好担心的吗?我的代码可以吗,还是我应该明确地写一个复制 ctor 和赋值operator=
?