提问者:小点点

union使用字符串数据类型时会出错,但使用char数据类型时会出错


#include<iostream>
using namespace std;


union f 
{
    string car;
    int model;
};

int main(){
  union f p;
  p.car = "mclaren";
  cout<<endl<<"car :"<<p.car<<endl;
  return 0;
}

串车; 给出一个类似这样的错误:“因为默认定义的格式不正确,所以隐式删除:”。

但是当我用char替换字符串时,它没有显示错误。 这是因为联合不能处理字符串数据类型,还是有其他原因?


共2个答案

匿名用户

[副本]
此答案很好-https://stackoverflow.com/a/19764531/13739967

由于Std::String是非Pod的,因此您必须定义一个构造函数/析构函数才能使其适用于C++11和更高版本。

匿名用户

不应该在联合中使用std::字符串。 查看@brc-dd的评论和他链接的答案。