Salut,
Je n'utilise toujours pas D2009, et je n'ai pas la doc sous la main au moment où j'écris ce message, ce qui fait que la réponse sera sans doute un peu approximative.
C'est un des problèmes du choix que CodeGear a fait pour implémenter les génériques : tu es obligé de passer par des interfaces pour dire que ton type supporte l'addition, ou la multiplication, ou l'égalité, ou ceci ou cela.
Du côté code : tu dois expliciter les contraintes au moment de la déclaration du type générique
SearchSpace<TBottomSpin : IArithmetic, TVariantUltraSymetric : IArithmetic> = class
Je ne sais pas quel est le vrai nom de l'interface -je ne crois pas que ce soit "IArithmetic"- regarde l'aide de D2009 pour retrouver cette info. Ils ont défini tout un ensemble d'interfaces par défaut, du style "IEqualityComparer<T>" pour un les types qui ont un opérateur "=" ad-hoc, etc...
Du côté exécution : malheureusement, cela fait que, même pour accéder à l'opération "+" des entiers, l'exécutable fait une recherche de méthode d'interface...
Si tu as besoin que ton code reste efficace, je te conseille plutôt de regarder du côté de ce hack.
Sinon, consulte l'aide de D2009 pour plus d'info sur ces interfaces.
Partager