C++ 错误:联合中不允许复制分配运算符
当出现以下错误时,我正在编译下面的代码。我找不到原因C++ 错误:联合中不允许复制分配运算符,c++,struct,unions,C++,Struct,Unions,当出现以下错误时,我正在编译下面的代码。我找不到原因 typedef union { struct { const int j; } tag; } X; int main(){ return 0; } 错误:联合中不允许使用带有复制赋值运算符的成员“::”::标记 这段代码使用gcc编译罚款。仅在g++中给出错误。为了拥有某类类型的联合的成员T,T,其特殊成员函数(默认构造函数、复制构造函数、复制赋值运算符和析构函数)必须非常简单。也就是说,它们必须是由
typedef union {
struct {
const int j;
} tag;
} X;
int main(){
return 0;
}
错误:联合中不允许使用带有复制赋值运算符的成员“::”::标记
这段代码使用gcc编译罚款。仅在g++中给出错误。为了拥有某类类型的联合的成员
T
,T
,其特殊成员函数(默认构造函数、复制构造函数、复制赋值运算符和析构函数)必须非常简单。也就是说,它们必须是由编译器隐式声明和定义的
您的未命名结构没有简单的复制赋值运算符(事实上,它根本没有),因为它有一个
const
-限定的成员变量,禁止生成隐式声明的复制赋值运算符。编译器尝试为联合
本身生成赋值运算符,但失败,因为联合
的活动字段如果未知,则返回到对象的逐位复制。但是,它也不能这样做,因为struct{const int j;}
有一个非平凡的赋值运算符
看
error: member `<`anonymous union>::`<`anonymous struct> `<`anonymous union>::tag with copy assignment operator not allowed in union