【发布时间】:2016-02-06 21:27:38
【问题描述】:
我想使用传递给初始化构造函数的参数来初始化Enemy::copy,但是我得到以下错误:
C2280: 'Enemy &Enemy::operator =(const Enemy &)': attempting to reference a deleted function
这里是class Enemy的声明:
#include "Pickup.h"
class Enemy : public Entity
{
private:
std::vector<Pickup>& copy;
public:
Enemy::Enemy(std::vector<Pickup>& arraypickup) : copy(arraypickup) {}
};
还有来自main()的代码:
std::vector<Pickup> arraypickup;
Enemy enemy(arraypickup);
我该如何解决?
【问题讨论】:
-
您显示的来自
main的两行不会导致您发布的错误。它抱怨删除的复制构造函数。您的代码都没有使用复制构造。错误在别处。 -
可能
enemy稍后会按值传递 -
后来复制没有任何反应,所以我不知道出了什么问题;/
-
Melchior,您指的是
Enemy::copy。 CoryKramer 指的是 Enemy 类中的复制构造函数。您为该字段选择了一个非常不幸的名称。 -
问题很可能是你的名字奇怪的成员
copy,它不是任何东西的副本,而是对你传递给构造函数的任何东西的引用。引用不可重新赋值,因此编译器不能为您的类隐式定义复制赋值运算符。因此,如果您尝试将某些内容复制到Enemy,您会看到该错误。