c++ 14及以上不可以正常使用联合体了吗?
我在C++ primer plus中看到作者能够直接在结构体中使用联合体,他是c++ 11的,我用vs2022 选的是c++ 14,但是不能在结构体中正常使用联合体,如下图报错,请教各位这是什么原因string是个对象,能这么用吗 --------------------配置: 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 个警告
JuncoJet 发表于 2023-2-2 11:04
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------
正在编译 C:%u ...
好的,多谢! union 中的数据成员不能有构造函数(似乎不太严谨),string 有个构造函数,换成 char * 吧。
本帖最后由 xiao-bai-shu 于 2023-2-2 15:21 编辑
代码有点鄙陋。学得不深。
xiao-bai-shu 发表于 2023-2-2 14:21
union 中的数据成员不能有构造函数(似乎不太严谨),string 有个构造函数,换成 char * 吧。
对的,就是楼上说的那个方法 本帖最后由 xiao-bai-shu 于 2023-2-2 15:24 编辑
Panel 发表于 2023-2-2 15:05
对的,就是楼上说的那个方法
如果没有节省内存的必要不建议用 union,不好用。不如直接用 struct。
并且你这个帖子发错版块了。
xiao-bai-shu 发表于 2023-2-2 15:15
如果没有节省内存的必要不建议用 union,不好用。不如直接用 struct。
并且你这个帖子发错版块了。
union可不只是为了节省内存,union是为了做转换的 MarioCrane 发表于 2023-2-5 13:27
union可不只是为了节省内存,union是为了做转换的
模板类或者其他数据转换方法不也能解决?
页:
[1]
2