不是有QueryInterface的原码吗,if(iid==IID_IMyInterface)
 *ppvObject=static_cast<...>this;
//....*ppvObject->AddRef();

解决方案 »

  1.   

    通过queryinterface的机制,客户可以询问对象,发现对象的其他功能(对象包含多个接口时),他可以被看作C++里面dynamic_cast操作符的"与编程语言和编译器均无关"的版本
    queryinterface具有对称性,自反性,可传递性
    自反性确保了"任何一个接口都能满足对IUnknown的查询请求
    对称性: 一个对象所暴露的所有接口都是平等的客户无需以任何特定的顺序来获得
    某个接口指针
    传递性: 得到一个对象包含的其中一个接口指针后,可以通过queryinterface
           获得其他的接口指针