说明
这里解决了类的自定义构造函数提示“无法引用“联合”的默认构造函数–他是已删除的函数”,从而推理出来了一些结论
起因
经过
(一堆废话,主要讲事件的经过,急于找解决方法的跳过)今天在类外面声明了一个联合,类里面定义了一个联合变量,在写类的构造函数时,vs提示我“无法引用“联合”的默认构造函数–他是已删除的函数”。以前都是类里面定义变量,然后写有参缺省构造,这里还没对变量进行处理就给我报错了。弄得我一脸懵逼,直到我找到了一篇帖子说“因为c++禁止联合体中包含有非默认的构造函数和析构函数的类型,许多继承的Qt类不能在联合体中使用(这些类都有自定义的构造/析构函数)。”。当然啦,这一句与我们的问题毫无关系,但是仔细读,就产生了一个疑问:“联合为啥要禁止非默认构造函数和析构函数,难道他要调用构造函数?既然他会调用类的构造函数,是否表明他也有默认的构造函数?”。是的,联合也有构造函数,只要自定义联合体的构造函数就可以。
结论
联合体和类一样,都有构造函数,有的时候需要我们自己去定义,所以我在另一篇帖子里看到的问题: