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(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--;
}
}
还是一样的错误;/
最佳答案
Unit 没有复制构造函数(因此您不能按值传递它)。
此外,这是未定义的行为:
Unit figure(figure,i);
因为 figure
的值在初始化之前就被使用了。
关于c++ - 在构造函数中 'Player::Player(std::string, int, Board*)' :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19529115/