網(wǎng)站版權(quán)問題seo工具是什么意思
今天發(fā)現(xiàn)當(dāng)我在union中包含了多個(gè)結(jié)構(gòu)體時(shí),結(jié)構(gòu)體有默認(rèn)構(gòu)造函數(shù)時(shí),編譯報(bào)錯(cuò)。
問題點(diǎn):
- union不支持構(gòu)造函數(shù)和析構(gòu)函數(shù)
- union中的元素本身也是不支持構(gòu)造函數(shù)和析構(gòu)函數(shù)的。
- 包含union的結(jié)構(gòu)體也不支持構(gòu)造函數(shù)和析構(gòu)函數(shù)。
出錯(cuò)代碼如下:
struct MyStruct {MyStruct() { /* 構(gòu)造函數(shù)代碼 */ }~MyStrcut(){/* 析構(gòu)函數(shù)代碼*/}int a;double b;
};union MyUnion {MyStruct s;int i;
};
解決方案如下:
- 方案一:移除結(jié)構(gòu)體中的構(gòu)造函數(shù),在使用union的外部初始化;
- 方案二:使用結(jié)構(gòu)體替換聯(lián)合體。