c# – 类型`T’必须是可转换的,以便在泛型类型或方法中将其用作
发布时间:2020-12-15 08:31:23 所属栏目:百科 来源:网络整理
导读:我有这两个主要课程.首先是FSMSystem类: public class FSMSystemT : MonoBehaviour where T : FSMSystemT{ private T m_Owner = default(T); protected FSMStateT currentState; private Dictionaryint,FSMStateT m_states; public FSMSystem(T owner) { m_
我有这两个主要课程.首先是FSMSystem类:
public class FSMSystem<T> : MonoBehaviour where T : FSMSystem<T> { private T m_Owner = default(T); protected FSMState<T> currentState; private Dictionary<int,FSMState<T>> m_states; public FSMSystem(T owner) { m_Owner = GameObject.FindObjectOfType(typeof(T)) as T; //owner; m_states = new Dictionary<int,FSMState<T>>(); } protected void AddState( FSMState<T> state ) { m_states.Add( state.GetStateID(),state ); } } 第二节,FSMState: public abstract class FSMState<T> { public abstract int GetStateID(); public abstract void OnEnter (FSMSystem<T> fsm,FSMState<T> prevState); public abstract void OnUpdate (FSMSystem<T> fsm); public abstract void OnExit (FSMSystem<T> fsm,FSMState<T> nextState); } 它会导致以下错误:
有人能告诉我如何解决这个问题吗?我看到很多其他类似的帖子,但我没有看到这种关系. 解决方法
FSMState的T也必须受到约束,否则它不能用作FSMSystem的T–它对其有约束(T:FSMSystem< T>).
如果您提供了编译器错误的行号,我怀疑它会指向OnEnter等方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |