我有一个像这样的原型类:
class CEnumList<T:EnumValue> {
...
public function clone():CEnumList<T> {
var result:CEnumList<T> = new CEnumList<T>();
...
return result;
}
}
克隆方法实现创建实例完整副本的标准过程。我有一个继承的类:
class CElements extends CEnumList<EElements> {
...
}
其中EElements是枚举类型。但是当我打电话到某个地方时:
var damage:CElements = baseDamage.clone();
我有一个错误“ data.CEnumList应该是data.char.CElements”,这是绝对正确的。但是,如果我继承的类仅因枚举类型不同,该如何继承原型clone()方法?是否应该创建与具有不同类的数量一样多的clone()方法,并且所有这些方法都将仅转换私有基类克隆的类型?
可能根本不是关于haxe的问题,而是关于应用程序体系结构的问题。
如果需要精确返回CElement,则可以,您将需要另一个返回CElement的克隆方法。
但是您可能不想扩展CEnumList而是像这样对它进行typedef
typedef CElements = CEnumList<EElements>;
那应该可以解决问题,因为结果将被正确键入(因为类型将是相同的,typedef
仅给出一个同义词)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句