gpt4 book ai didi

c++ - 动态转换接口(interface)指针

转载 作者:行者123 更新时间:2023-11-30 21:18:21 24 4
gpt4 key购买 nike

我需要动态转换接口(interface)指针,但我的接口(interface)没有任何虚拟方法,基本上我不控制接口(interface)的代码,我想使用相同的指针来使用两个接口(interface)中的方法,如果我动态转换,那么因为接口(interface)是不是多态类型,它不允许,我有什么选择?

代码如下所示

Interface 2 : interface 1
{
foo();
}
Interface 3: Interface 2
{
koo();
}

some class
{
Interface 2 *ptr;
ptr->foo();

现在我想使用相同的指针来访问接口(interface) 3 方法

动态转换接口(interface)指针

     Interface3 *ptr = dynamic_cast<Interface3 *>(ptr);
ptr->koo();
}

它告诉我不能这样做,因为 Interface3 不是多态的,现在我无法控制接口(interface),但我想对两个接口(interface)使用相同的指针,我怎样才能实现这一点?

最佳答案

鉴于您编写的几乎代码,您知道 ptr 指向 Interface2,如果您有某种方式确定 ptr code> 实际上指向一个 Interface3,您可以只使用静态转换:

Interface3 *ptr3 = static_cast<Interface3 *>(ptr);
ptr3->koo();

但是,如果您不确定 ptr 是否确实指向 Interface3,则编译器或运行时无法告诉您任何信息。

也许还有 Interface1Interface2 的其他字段,您可以查看它们来了解它是否真的是 Interface3,但这取决于您选择不包含在问题中的库的详细信息。

如果您需要更多帮助,则必须在问题中提供更多详细信息。

关于c++ - 动态转换接口(interface)指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25393497/

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