Bonjour à toutes et tous,
Je commence à "jouer" avec les types génériques et j'ai un petit problème de syntaxe de déclaration avec Delphi Xe8.
J'ai simplifié le problème avec le code exemple suivant :
Comme on le voit, TBaseType est spécialisé en TInt et TString. Pas de soucis jusque là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 uses generics.collections; type TBaseType<T> = class private procedure SetValue(const Value: T); protected FValue: T; public property Value: T read FValue write SetValue; end; TInt = class( TBaseType<integer> ); TString = class( TBaseType<string> ); TBaseList<T1:TBaseType<T>> = class( TObjectList<T1>) function DoSomething: boolean; end; TIntList = class( TBaseList<TInt> );
TBaseList est une liste basée du TObjectList implémentant une fonctionnalité supplémentaire.
Le problème se situe au niveau de la déclaration de TBaseList. (Ligne 17) Delphi se plaint : "Undeclared Identifier :'T'" ainsi que "Type parameter 'T' must be a class type".
J'ai essayé plusieurs variantes de déclaration sans trouver celle qui satisferait le compilateur.
Quelqu'un peut-il m'expliquer où se situe mon erreur ?
Merci d'avance,
Coyotte
Partager