2009-10-23 12 views
2

Dans COM, si j'ai une interface IBase et une interface IX qui hérite de IBase, puis-je appeler des méthodes de IBase via un pointeur IX, et sinon, pourquoi puis-je appeler Release() et AddRef() sur n'importe quelle interface COM pointeur sans un upcast?Les mises à jour en COM automatique?

Répondre

4

Oui, vous pouvez appeler n'importe quelle méthode de la base via le pointeur vers le dérivé. C'est exactement pourquoi vous pouvez appeler AddRef(), Release() et QueryInterface() à travers n'importe quel pointeur d'interface.

+0

Cool ... merci. J'espérais que c'était le cas. Je suis assez nouveau dans COM, bien que je sois au courant de ses bases depuis un moment, mais je réécris le code DirectShow de quelqu'un et ils utilisent QI pour exactement ce cas partout, donc ça m'a inquiété! –

+1

Ils pourraient confondre le upcast avec le downcast. Downcast nécessite un appel QI() (et une vérification pour voir si elle a réussi). – sharptooth

Questions connexes