Ce sujet fait suite � mon pr�c�dent : Interface, H�ritage et Supports !

Je suis enfin en train de migrer de BCB2007 � BCBXE2 !

J'avais remarqu�, il y a quelques mois, un nouveau Warning W8130 L'interface '%s' ne d�rive pas de IUnknown. (Les interfaces doivent d�river de IUnknown) (C++)

J'utilise des interfaces (je dois en avoir d�j� plus 50) dans mon code
Aussi bien de interface C++ qui sont juste des "classes abstraites pures"
et des DelphiInterface (avec Supports, GUID, IInterface, TInterfacedObject ...)

Que pensez vous de m�langer Interface C++ et Delphi Interface ?
Pour dans le code, c'est limpide :
Si c'est une Interface C++, je sais pr�cisement quoi faire avec, il n'y aura pas de cast sauvage.
Si c'est une DI, j'interroge Supports pour savoir ce qu'elle sait ou pas faire, le case est donc sagement encapsul�

En fait, les DI sont les Factory des Interface C++ !

Je pourrais retirer le Warning du projet mais je n'aime pas trop faire cela, si les developpeurs VCL ont jug� que cela n�cessitait un Warning c'est qu'il y a une bonne raison !
En th�orie, je pourrais tenter un #pragma option push -w-diu mais ce commutateur n'est pas document�, donc p�rilleux

Je ne vois pas trop l'int�r�t de forcer le d�veloppeur � faire IUnknown sachant que cela oblige l'impl�mentation de QueryInterface, AddRef et Release !
N'est-ce pas un anti-pattern YAGNI ?

Que pensez-vous de cette nouvelle obligation "Les interfaces doivent d�river de IUnknown" ?

A Savoir que le Warning n'apparait que lors de l'impl�mentation par une classe h�ritant de TObject
Avec une impl�mentation avec une classe C++ strict (non VCL) d'une interface C++, pas de Warning, heureusement !

Souvent ce genre de Warning sont le signe qu'ils vont finir par obliger d'h�riter et d'impl�menter IUnknown (comme c'est le cas en Delphi d'ailleurs)




PS : J'ai essay� de faire court (si si je vous assure, j'ai retir� au moins la moiti� de mes billeves�es)