Suppose my COM object implements two or more COM interfaces:
class CMyClass : public IPersistFile, public IPersistStream { };
when implementing
It doesn't matter which upcast you use, only that you use the same one always. I'd just pick a convention, such as always returning the first one declared in the inheritance list.