我不明白为什么这个构造函数不起作用
本文关键字:构造函数 不起作用 为什么 明白 | 更新日期: 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
类实现一个构造函数,该构造函数将字段设置为Name
和ownerClass
但ownerClass
字段必须是通用的
我正在尝试做一些不可能的事情?
你需要在MovingState
中调用基类构造函数:
public MovingState(AI owner, string name)
: base(owner, name)
{
}