2017-10-10 2 views
0

In C++ kann ich es so implementieren.Class Inherits Generic In Swift

template<typename MyType> 
class MyClass : public MyType 
{  
}; 

Ist es möglich, dies in Swift zu tun?

///Compiler error: Inheritance from non-procotol, non-class type 'T' 
class MyClass<MyGeneric> : MyGeneric 
{ 
} 
+0

Nein, das ist nicht möglich. Warum willst du das genau? – Hamish

+0

meinst du nicht Klasse MyClass : MyGeneric {} '...? weil deine Syntax überhaupt keinen Sinn ergibt. – holex

Antwort

1

Sie müssen Ihre Klasse als Einschränkung verwenden. Die Art und Weise Sie schrieb es macht MyGeneric einen Platzhalter-Namen (und nicht ein Verweis auf die Klasse mit dem gleichen Namen):

class MyClass<T:MyGenericClass>:MyGenericClass 
{} 

Das setzt voraus, dass das, was Sie versuchen, etwas zu bekommen ist:

class MyGenericSubClass: MyGenericClass {} 

let c = MyClass<MyGenericSubClass>()