C++Error2208:…尝试引用已删除的函数

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类中的一个成员函数,最后的返回值是这个类的一个对象。

你可能感兴趣的:(c++)