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

本文关键字:构造函数 不起作用 为什么 明白 | 更新日期: 2024-10-30 17:18:27

>我有一个简单的 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,字符串)所需的形式参数所有者的参数

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

我不知道这样做是否可行,我希望继承表单FSMState类实现一个构造函数,该构造函数将字段设置为NameownerClassownerClass字段必须是通用的

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

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

你需要在MovingState中调用基类构造函数:

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