Private interface and aggregation


How can I successfully QI for an interface implemented by an
aggregated component, without declaring that interface in the
interface list of the outer (aggregating component)?

If I aggregate a component in another, I am oblidged to declare all the interfaces I wish to expose to clients in the
CoClass declaration of the aggregating component (the outer).

If I QI on the outer for an interface implemented by the inner
component, if it is not declared in the outer's CoClass interface
list, E_NOTIMPL results.

This makes encapsulation hard. Suppose I want to implement an
interface in the Inner that I do not wish to expose to the
outer - like a friend class in C++.

Can this be done?

Thanks for your suggestions!

Edward Garson
Software Developer
Channel 4 Television Corporation