Player::Player(string Playername, int nr ,Board* x)
{
imie= Playername;
number=nr;
int k;
if(nr==1)
k=0;
else k=24;
for(int i=0;i<UNITS_NUMBER;i++)
{ Unit figure(figure,i);
units[i]=figure;
units[i].move(x->getF(k));
if(nr==1)
k++;
else k--;
}
}
(它只是Player类的构造函数) 和错误:
在构造函数Player::Player(std::string, int, Board*)
中:
没有用于调用Unit::Unit()
Player::Player(string Playername, int nr ,Board* x)
以下是Unit
class Unit
{
Field* place;
Unit* unit;
int name;
public:
Unit(Unit iam, int n);
void move(Field* x);
int getname(){return name;}
};
以下是Player
const int UNITS_NUMBER = 5;
class Player
{
Unit units[UNITS_NUMBER];
string imie;
int number;
public:
Player(string Playername, int nr, Board *x);
string getName();
void decide(Board*);
~Player();
};
如果你需要更多,请告诉我。
更改后:
class Unit
{ Field* place;
Unit* unit;
int name;
public:
Unit(int n);
void move(Field* x);
int getname();
};
和Player
Player::Player(string Playername, int nr ,Board* x)
{
imie= Playername;
number=nr;
int k;
if(nr==1)
k=0;
else k=24;
for(int i=0;i<UNITS_NUMBER;i++)
{ Unit figure(i);
units[i]=figure;
units[i].move(x->getF(k));
if(nr==1)
k++;
else k--;
}
}
仍然是同样的错误; /
答案 0 :(得分:3)
单位没有复制构造函数(因此您无法通过值传递它)。
此外,这是未定义的行为:
Unit figure(figure,i);
因为figure
的值在初始化之前使用。
答案 1 :(得分:3)
您遇到的问题是Unit
构造函数,其中包含Unit
的副本。但是,Unit
没有复制构造函数或默认构造函数,因此无法构造它。
目前尚不清楚为什么要在Unit
类中引用Unit
对象,因此很难提出解决方案。
您也无法声明并引用该行中的变量:
Unit figure(figure,i);