gpt4 book ai didi

c++ - 如何使用两种类型的 union

转载 作者:可可西里 更新时间:2023-11-01 15:46:31 25 4
gpt4 key购买 nike

我正在尝试制作一个可以容纳 stringintvector

我试过下面的代码,但是我得到了编译错误

error: use of deleted function 'my_union::~my_union()'

我做错了什么?

#include <iostream>
#include <vector>

using namespace std;

union my_union
{
string str;
int a;
};

int main()
{
vector<my_union> v;
my_union u; // error: use of deleted function 'my_union::~my_union()'
u.str = "foo";
v.push_back(u);
return 0;
}

最佳答案

来自 here

If a union contains a non-static data member with a non-trivial special member function (default constructor, copy/move constructor, copy/move assignment, or destructor), that function is deleted by default in the union and needs to be defined explicitly by the programmer.

您必须为您的 union 显式定义一个析构函数,以替换为 string 自动删除的析构函数。

另请注意,这仅在 c++11 中有效。在早期版本中, union 内根本不能有具有非平凡特殊成员函数的类型。

从实用的角度来看,这可能仍然不是一个好主意。

关于c++ - 如何使用两种类型的 union ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37027530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com