【发布时间】:2018-01-29 16:26:42
【问题描述】:
struct Dingus {
union {
int dingly[4 *4];
vec3 dinglyDo;
}diddly;
inline Dingus() {}
};
此代码产生错误
error C2280: 'Dingus::<unnamed-type-diddly>::<unnamed-type-diddly>(void)': attempting to reference a deleted function
奇怪的是,当我删除引用联合的“diddly”时,没有错误。
vec3 是 GLM 库中的一个结构,我可以将类型替换为其他一些类,我会得到相同的错误...但是如果我用像 float 这样简单的东西替换它,我不会得到错误
由于删除“diddly”删除了错误,这似乎是一个与one不同的问题
【问题讨论】:
-
@LogicStuff 这是 GLM 库中的一个结构,我可以用其他一些东西替换类型,我会得到同样的错误......但如果我用像 float 这样简单的东西替换它,我不会'没有得到错误
-
"delete the "diddly",从而给出一个名称来引用联合"是什么意思?您将
union { ... } diddly;更改为union Foo { ... };?因为如果是这样,那意味着完全不同的东西,所以Dingus构造函数不会尝试默认初始化该类型的对象,所以它编译一点也不奇怪。 -
@JonathanWakely 抱歉,我说得更清楚了。我的意思是说,当我把
union { ... } diddly;变成union { ... }时,没有错误
标签: c++