gpt4 book ai didi

c++ - 如何向上查询或向下查询接口(interface)指针?

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:34 25 4
gpt4 key购买 nike

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

我已经定义了接口(interface)

struct Iinterface1
{
methods X1()
}

struct Iinterface2 : Iinterface1
{

methods X2()
}

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

我可以使用函数 queryInterface() 查询并获取指向接口(interface)的指针

由于interface2后来出现,我需要在我的程序中同时支持method1和method2,所以我不能让接口(interface)指针指向interface2并执行方法x1和方法x2。我正在寻找的是如何在执行期间升级或更改接口(interface)指针。所以我会查询并获取指向 interface1 的指针并执行方法 x1,稍后当我想执行方法 x2 时,我需要查询指向 interface2 的指针,以便我可以执行方法 x2。说得通?感谢您对示例的任何帮助。

最佳答案

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

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

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

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

关于c++ - 如何向上查询或向下查询接口(interface)指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25335592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com