2009-02-19 8 views
1

Disons que vous avez deux assemblys (deux dll). La première contient une classe appelée Base et la seconde contient une classe appelée Derived qui hérite publiquement de Base. Lorsque j'utilise les fichiers tlb pour créer des classes C++ dans Visual Studio 2005, j'obtiens des classes Base et Derived, mais l'une n'est pas une sous-classe de l'autre. Il ne semble pas y avoir de relation IS-A. Y a-t-il une raison à cela?Héritage public et fichiers tlb

Répondre

2

Je suppose ici que les deux assemblages communiquent l'un avec l'autre via COM, si c'est bien le cas alors vous avez raison, il n'y a pas de relation IS-A dans COM en ce qui concerne l'héritage CLASS, seulement dans en ce qui concerne l'héritage d'Interface.

Si vous deviez définir une interface IBase et IDerived qui dérive de IBase, alors vous seriez capable de lancer IDerived vers IBase sur le même objet qui implémente les deux.

+0

Ou si Derived vient de mettre en œuvre IBase. Cela ne serait-il pas suffisant? – criddell

+0

Oui, il le ferait. Puisque dans COM il n'y a que des interfaces, peu importe l'arbre d'héritage de l'objet, tant que vos objets implémentent les interfaces dont vous avez besoin. –