我有一个基类和2个派生类。基类有一些简单的受保护的float变量,而我的基类的构造函数如下:
public Enemy(float _maxhp, float _damage)
{
maxhp = _maxhp;
health = _maxhp;
damage = _damage;
}
但是,我的派生类Range
还有2个浮点变量attack and attackSpeed
,在创建Range
的新实例时需要将它们作为参数传递,但我似乎无法之所以能够做到这一点,是因为当我尝试对具有以下参数的派生类使用构造函数时,出现错误提示There is no argument that corresponds to the required formal parameter '_maxhp' of 'Enemy.Enemy(float, float)'
:
public Range(float _maxhp, float _damage, float _attack, float _attackSpeed)
但是具有相同数量参数的构造函数可以工作
public Range(float _maxhp, float _damage)
为什么会发生这种情况,并且有某种解决方法?预先感谢。
答案 0 :(得分:10)
您必须指定如何使用base()
构造函数调用在基类上调用构造函数:
public Range(float _maxhp, float _damage, float _attack, float _attackSpeed)
: base(_maxhp, _damage)
{
// handle _attack and _attackSpeed
}
答案 1 :(得分:3)
尝试-
public Range(float _maxhp, float _damage, float _attack, float _attackSpeed) : base(_maxhp, _damage)
{
this.attack = _attack;
this.attackSpeed = _attackSpeed;
}