J'ai une petite curiosité à vous soumettre, en [DELPHI 2010]
Soit une classe TFoo.
Soit une classe TSubFoo dérivée de la précédente
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 TFoo = class public constructor Create ; virtual ; procedure DoSomethingUsefull ; end ;
Soit une classe générique, avec une contrainte de type, le type générique doit être issu de TFoo, bien évidemment :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 TSubFoo = class(TFoo) public constructor Create ; override ; end ;
Lorsque je compile le code comprenant ces trois classes, j'obtiens une erreur de compatibilité de type entre TFoo et TSubFoo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 TMyList<T:TFoo,constructor> = class public constructor Create ; procedure DoSomethingWithFoo(aT : T) ; function GetAFoo : T ; end ;
Ou si vous préférez la contrainte de type semble ne pas fonctionner.
Par contre, si on enlève la contrainte de type, aucune difficulté, mais bien évidemment, dans ce cas, pourquoi s'ennuyer avec la contrainte de type dans la documentation de Delphi 2010 ?
Si vous avez une idée, cela pourrait m'aider. J'ai contourné dans mon projet en cours, mais c'est toujours désagréable, sans compter que çà m'a pris du temps ...
Partager