c – 如何使用两种类型的联合

前端之家收集整理的这篇文章主要介绍了c – 如何使用两种类型的联合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图制作一个可以容纳string和int的向量.

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

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.

您必须显式地定义一个用于联合的析构函数来替换字符串自动删除的析构函数.

另请注意,这仅在c 11中有效.在早期版本中,根本不能在一个联合中使用非平凡特殊成员函数的类型.

从实践的角度来看,这可能还不是一个好主意.

原文链接:https://www.f2er.com/c/115706.html

猜你在找的C&C++相关文章