如何查询或查询界面指针?

时间:2014-08-15 23:39:12

标签: c++ pointers interface com

我需要查询并查询程序中的接口指针

我有界面定义

struct Iinterface1
{
    methods X1()
}

struct Iinterface2 : Iinterface1
{

     methods X2()
}

queryInterface( *interface)
{
  returns the pointer to one of above interface
}

我可以使用函数queryInterface()

查询并获取指向接口的指针

因为interface2来了以后,我需要在我的程序中同时支持method1和method2,所以我不能有接口指针指向interface2并执行方法x1和方法x2。 我正在寻找的是如何在执行期间升级或更改接口指针。 所以我会查询并获取指向interface1的指针并执行方法x1以后当我想执行方法x2时,我需要查询我的指向interface2的指针,这样我就可以执行方法x2了。说得通? 感谢任何帮助,例如。

1 个答案:

答案 0 :(得分:1)

假设Interface1有一个虚拟方法,那么如果你有一个指向Iinterface1的指针,你可以测试它是否是带有动态转换的Iinterface2

const Iinterface2 * is_Iinterface2 (const Iinterface1 *p) {
    return dynamic_cast<const Iinterface2 *>(p);
}

如果结果为NULL,则p不是来自Interface2派生的对象。

C ++无法通过动态查询来确定某个类是否具有特定方法。