在构造函数"Player::P layer(std::string, int, Board*)"中:
In constructor 'Player::Player(std::string, int, Board*)':
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--;
}
}
还是同样的错误;/
Unit 没有复制构造函数(因此不能按值传递它)。
此外,这是未定义的行为:
Unit figure(figure,i);
因为 figure
的值是在初始化之前使用的。
您遇到的问题是Unit
构造函数在其中获取Unit
的副本。 但是,Unit
没有复制构造函数或默认构造函数,因此无法构造它。
不清楚为什么要从Unit
类中引用Unit
对象,因此很难提出解决方案。
您也不能声明和引用该行中的变量:
Unit figure(figure,i);
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 'short int'持有的值溢出,但"自动"不会溢出?
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 调用'begin(int [n])'没有匹配函数
- 没有显式声明的int[]中的foreach
- 在c++中访问int到类对象的映射时出错
- 为什么我无法更改"set<set>"循环中的值<int>
- 长 长 int 不要 长 int 好
- C++程序在循环后给出奇怪的int值
- 如何计算数据类型的范围,例如int
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 在构造函数"Player::P layer(std::string, int, Board*)"中: