2

我有这个结构,到目前为止我一直在使用没有错误:

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=

4

0 回答 0