
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);} 它会导致以下错误:
error CS0309: The type ‘
T‘ must be convertible to ‘FSMSystem<T>‘ in
order to use it as parameter ‘T‘ in the generic type or method
‘FSMSystem<T>‘
有人能告诉我如何解决这个问题吗?我看到很多其他类似的帖子,但我没有看到这种关系.
解决方法 FSMState的T也必须受到约束,否则它不能用作FSMSystem的T–它对其有约束(T:FSMSystem< T>).如果您提供了编译器错误的行号,我怀疑它会指向OnEnter等方法.
总结以上是内存溢出为你收集整理的c# – 类型`T’必须是可转换的,以便在泛型类型或方法中将其用作参数`T’全部内容,希望文章能够帮你解决c# – 类型`T’必须是可转换的,以便在泛型类型或方法中将其用作参数`T’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)