Sio*_*vok 5 c++ membership unions
我可能弄错了,但我发现的基本解释是联合无法初始化,因为它不知道要调用哪个成员的构造函数.编译器无法自动为union生成构造函数.
为什么不允许用户定义联合构造函数?这将删除所述问题并允许存在具有非平凡构造函数/析构函数的联合成员.
另外,为什么联盟成员不能有任何自定义构造函数?前面的解释不代表自定义构造函数.
更新1:
例:
struct SQuaternion
{
union
{
S3DVector Axis;
struct
{
float X;
float Y;
float Z;
};
};
float W;
};
Run Code Online (Sandbox Code Playgroud)
注意:这里的问题似乎是联盟是匿名的.因此,如何命名联盟的构造函数?似乎不可能这样做,仅仅因为它没有名字,没有其他原因.如果这是一个简单的词汇问题,那将是一个可怕的原因......
更新2:只需将有问题的成员包装在一个封闭的匿名结构中,错误就会消失.我想这是一个与匿名联盟最接近的事情.它不再是一个问题的事实似乎仍然很奇怪......
| 归档时间: |
|
| 查看次数: |
6648 次 |
| 最近记录: |