如何向上查询或向下查询接口指针

how to query up or query down the interface pointer?

本文关键字:查询 接口 指针      更新时间:2023-10-16

我需要在程序中向上和向下查询接口指针,

我已经定义了接口

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。我正在寻找的是如何在执行期间升级或更改接口指针。所以我会查询并获取指向接口1的指针并执行方法x1稍后当我想要执行方法x2时,我需要查询指向接口2的指针以便执行方法x2。有道理吗?

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

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

如果结果是NULL,那么p不是来自于从Interface2派生出来的对象。

c++没有动态查询的方法来确定一个类是否有特定的方法。