错误:在C ++中向地图添加元素时使用已删除的函数

时间:2016-04-10 01:05:19

标签: c++11 g++

当我尝试在Linux环境中使用g ++ 11编译代码时,我得到了一面文字。我已经将错误的原因跟踪到一行代码,我正在尝试将元素添加到地图中。以下是一些相关代码:

set<Tuple> trash;
Relation garbage(trash, name, scheme_list);
Relations.insert({name, garbage});

Tuple和Scheme类(scheme_list的类型为Scheme)都只是vector<string>。 Relation类定义为

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;
}

目前代码的意图是创建一组空的元组,使用name中的现有名称和scheme_list中的方案列表来创建类{{1}的实例使用名称作为键插入Relation的地图。然而,当我编译代码时,它给了我一个巨大的“使用已删除函数”错误列表,并且“Relation :: Relation(const Relation&amp;)被隐式删除,因为默认定义将是格式错误”,后者是仅引用编译器给出的任何代码。导致此错误的原因是什么,为什么只有在我尝试将元素插入地图时才会出现?

0 个答案:

没有答案