2010-10-11 5 views
0

Je voudrais créer une classe imbriquée basée sur le type fourni à la classe externe. J'ai besoin de la classe interne pour étendre T par certains membres:Est-il possible de dériver une classe imbriquée d'un type générique fourni par une classe externe?

TOuterClass<T:class> = class 
    type 
    TNestedClass = class(T) 
     MoreData:Integer; 
    end; 
end; 

Le compilateur dit "Non" ou plus spécifiquement [Erreur DCC] MyUnit.pas (20): E2021 Type de classe requis à class(T).

Est-il en quelque sorte possible de réaliser ce que je suis en train de faire?

Répondre

6

Non, ce n'est pas possible.

+0

Dommage, mais bon de savoir à coup sûr. Merci. –

2

Pas encore. Il devrait probablement, mais le compilateur ne pense pas encore à toutes les ramifications des contraintes génériques pour le moment. Vous devez ajouter ceci au QC comme demande de fonctionnalité.

0

Non, mais vous pouvez dans une classe dérivée qui a résolu le type de T:

TOuterClass<T:class> = class 
    //Data 
end; 

TDerived = class(TOuterClass<TObject>) 
    type 
    TNestedClass = class(TObject) 
     MoreData:Integer; 
    end; 
end; 
Questions connexes