我明白什么call to implicitly-deleted default constructor
意思是但我不明白为什么我会在这里得到它:
struct TransformData{
enum type_t{
kDelay=0,
kScale,
kTranslate,
kRotation
}type;
union data_t{
double delaySeconds;
float scale;
float rotation;
vec3 translate;
}data;
};
然后我有:
TransformData data; //generates error noted in title
POD 不应该有一个由编译器提供的简单的默认构造函数吗?
正如已经提到的,Vector3<T>
是非POD类型。根据您问题中的信息,如果您使用的是 C++11,则可以将其设为 POD 类型:
template <typename T>
struct Vector3 {
Vector3() = default; // <--- instead of { }
};
typedef Vector3<float> vec3;
struct TransformData {
union data_t {
double delaySeconds;
float scale;
float rotation;
vec3 translate;
} data;
};
TransformData data;
这样,将其粘在联合体中并保留默认构造函数就不会有任何问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)