繁体   English   中英

我不明白为什么这个构造函数不起作用

[英]I don't understand why this constructor does not work

我有一个简单的FiniteStateMachine,并且FSM的状态是从FSMState抽象类继承的类,它们强制实现某些方法和字段, ownerClass字段是泛型,因此每个状态都拥有对拥有该类的引用FSM的实例

public abstract class FSMState<T>
{
    /// <summary>
    /// Reference to the owner class of this State.
    /// </summary>
    protected abstract T ownerClass { get; set; }
    /// <summary>
    /// The ID name of this State.
    /// </summary>
    public abstract string Name { get; set; }

    //Constructor
    public FSMState(T owner, string name)
    {
        ownerClass = owner;
        Name = name;
    }
}

所以一个状态类看起来像这样

public class MovingState : FSMState<AI>
{
    protected override AI ownerClass { get; set; }

    public override string Name { get; set; }

    //Contructor.
    public MovingState(AI owner, string name)
    {
        ownerClass = owner;
        Name = name;
    }

}

但是构造函数不起作用,我得到了这两个错误

错误CS7036,没有给出与FSMState.FSMState(AI,string)的必需形式参数所有者相对应的参数

错误:FSMState类型不包含带有0个参数的构造函数

我不知道是否可以这样做,我希望继承ownerClass形式的FSMState实现一个构造函数,该构造函数设置字段NameownerClassownerClass字段必须是通用的

我正在尝试做一些不可能的事情?

您需要在MovingState调用基类的构造MovingState

public MovingState(AI owner, string name)
    : base(owner, name)
{
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM