Panel 发表于 2023-2-2 10:45

c++ 14及以上不可以正常使用联合体了吗?

我在C++ primer plus中看到作者能够直接在结构体中使用联合体,他是c++ 11的,我用vs2022 选的是c++ 14,但是不能在结构体中正常使用联合体,如下图报错,请教各位这是什么原因

JuncoJet 发表于 2023-2-2 11:00

string是个对象,能这么用吗

JuncoJet 发表于 2023-2-2 11:04

--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------

正在编译 C:\Users\Administrator\Documents\C-Free\Projects\unionTest\main.cpp...
C:\Users\Administrator\Documents\C-Free\Projects\unionTest\main.cpp:6: error: member `std::string <anonymous struct>::<anonymous union>::h' with constructor not allowed in union
C:\Users\Administrator\Documents\C-Free\Projects\unionTest\main.cpp:6: error: member `std::string <anonymous struct>::<anonymous union>::h' with destructor not allowed in union
C:\Users\Administrator\Documents\C-Free\Projects\unionTest\main.cpp:6: error: member `std::string <anonymous struct>::<anonymous union>::h' with copy assignment operator not allowed in union

编译中止 C:\Users\Administrator\Documents\C-Free\Projects\unionTest\main.cpp: 3 个错误, 0 个警告

Panel 发表于 2023-2-2 11:19

JuncoJet 发表于 2023-2-2 11:04
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------

正在编译 C:%u ...

好的,多谢!

xiao-bai-shu 发表于 2023-2-2 14:21

union 中的数据成员不能有构造函数(似乎不太严谨),string 有个构造函数,换成 char * 吧。

xiao-bai-shu 发表于 2023-2-2 14:32

本帖最后由 xiao-bai-shu 于 2023-2-2 15:21 编辑

代码有点鄙陋。学得不深。



Panel 发表于 2023-2-2 15:05

xiao-bai-shu 发表于 2023-2-2 14:21
union 中的数据成员不能有构造函数(似乎不太严谨),string 有个构造函数,换成 char * 吧。

对的,就是楼上说的那个方法

xiao-bai-shu 发表于 2023-2-2 15:15

本帖最后由 xiao-bai-shu 于 2023-2-2 15:24 编辑

Panel 发表于 2023-2-2 15:05
对的,就是楼上说的那个方法
如果没有节省内存的必要不建议用 union,不好用。不如直接用 struct。
并且你这个帖子发错版块了。

MarioCrane 发表于 2023-2-5 13:27

xiao-bai-shu 发表于 2023-2-2 15:15
如果没有节省内存的必要不建议用 union,不好用。不如直接用 struct。
并且你这个帖子发错版块了。

union可不只是为了节省内存,union是为了做转换的

xiao-bai-shu 发表于 2023-2-11 23:46

MarioCrane 发表于 2023-2-5 13:27
union可不只是为了节省内存,union是为了做转换的

模板类或者其他数据转换方法不也能解决?
页: [1] 2
查看完整版本: c++ 14及以上不可以正常使用联合体了吗?