C++11 错误:在C+;中向映射添加元素时使用了deleted函数+;

C++11 错误:在C+;中向映射添加元素时使用了deleted函数+;,c++11,g++,C++11,G++,当我试图在Linux环境中使用g++11编译代码时,我遇到了一大堆文本。我已经跟踪了一行代码中的错误原因,其中我正在尝试向映射添加元素。以下是一些相关代码: set<Tuple> trash; Relation garbage(trash, name, scheme_list); Relations.insert({name, garbage}); 设置垃圾桶; 关系垃圾(垃圾、名称、方案列表); 插入({name,garbage}); 其中,元组和Scheme类(Scheme\

当我试图在Linux环境中使用g++11编译代码时,我遇到了一大堆文本。我已经跟踪了一行代码中的错误原因,其中我正在尝试向映射添加元素。以下是一些相关代码:

set<Tuple> trash;
Relation garbage(trash, name, scheme_list);
Relations.insert({name, garbage});
设置垃圾桶;
关系垃圾(垃圾、名称、方案列表);
插入({name,garbage});
其中,元组和Scheme类(Scheme\u列表的类型为Scheme)都是简单的
vector
。关系类定义为

public:
    Relation(set<Tuple> TUPLES, string NAME, Scheme SCHEMES);
    ~Relation();
公共:
关系(集合元组、字符串名称、方案);
~Relation();
关系构造函数是

Relation::Relation(set<Tuple> TUPLES, string NAME, Scheme SCHEMES)
{
    Tuples = TUPLES;
    Name = NAME;
    Schemes = SCHEMES;
}
Relation::Relation(设置元组、字符串名称、方案)
{
元组=元组;
名称=名称;
方案=方案;
}

目前代码的目的是创建一组空元组,使用
name
中的现有名称和
scheme\u list
中的方案列表来创建class
relationship
的实例,以将该名称作为键插入到我的
relationships
映射中。然而,当我编译代码时,它给了我一个巨大的“使用已删除函数”错误列表,“Relation::Relation(const Relation&)被隐式删除,因为默认定义的格式不正确”,后者是编译器对我的任何代码的唯一引用。是什么导致了这个错误,为什么只有在我尝试将元素插入到映射时才会发生这个错误

关系
具有一些不可复制的数据成员(其中您不显示任何成员),这使得整个类也不可复制。但是,您正在尝试复制
垃圾
,这是一个
关系
类型的对象。因此出现错误。您应该添加
类关系的整个代码。您还可以尝试复制一个最小的“非工作”示例,例如,Class
Relation
具有一些不可复制的数据成员(其中您没有显示任何数据成员),这使得整个类也不可复制。但是,您正在尝试复制
垃圾
,这是一个
关系
类型的对象。因此出现错误。您应该添加
类关系的整个代码。您还可以尝试使用以下方法重现最小的“非工作”示例:。