C++Error2208:…尝试引用已删除的函数
在使用自己编写的类实例化c++linklist,结果编译器报了以下错误
错误 C2280 “LList::LList(const LList &)”: 尝试引用已删除的函数 l
从错误的内容看,似乎是自己的类的赋值构造函数被尝试调用却发现其已被删除。
一般而言,对象的赋值构造函数如果开发者没有提供,则编译器会生成默认的赋值构造函数。然而,默认的赋值构造函数在以下几种情况会被删除。
该类含有非静态的const成员变量
该类含有非静态的reference成员变量
该类含有不能被拷贝的成员变量
该类含有不能被拷贝的基类
该类含有用户定义的移动构造函数或者移动赋值函数
.
最终我将除传回的参数改为引用,成功解决了该问题,编译器仅仅给出了警告。
下面是通过编译的程序。
LList& reverse()
{
moveToEnd();
LList<E> reverselist;
reverselist.init();
while (curr != head)
{
reverselist.insert(curr->next->element);
prev();
}
prev();
reverselist.insert(curr->next->element);
return reverselist;
}
这个成员函数是在LList类中的一个成员函数,最后的返回值是这个类的一个对象。