gpt4 book ai didi

dynamic - 有没有办法将特征引用转换为另一个未连接类型的对象?

转载 作者:行者123 更新时间:2023-11-29 07:58:37 24 4
gpt4 key购买 nike

<分区>

我有一组从共享库中动态加载的接口(interface)。我希望能够将那些向下转换 的接口(interface)转换为其原始类型(特征)。

struct A {}
fn abstract_a<'l>() -> &'l Any { return &A{} }

trait TargetTrait { fn some_method(); }
impl TargetTrait for A { fn some_method() { println!("HELLO"); } }

fn main() {
let x: &Any = abstract_a();
let y: &TargetTrait = magic_conversion<&TargetTrait> (x);
}
// question: does 'magic_conversion'(or 'dynamic_cast') exist? what is it?

虽然加载这些不是问题,但我不知道如何使用此类界面获得目标 功能。换句话说:

/* simplified for readability */
// this part is known
let some_lib = loadlib("path/to/lib.so")
let some_interface: &Any = some_lib.loadfunc<&Any>("constructor_func")()
/* loader does not know what target type constructor has, so it presumes 'Any' */

// the problem:
let dependent_class = Some(class)
dependent_class.graphics = dynamic_cast<IGraphics>(some_interface)

在这个例子中,dependent_class 使用了一个外部接口(interface)并且不关心处理 libloading 和所有那些复杂的东西。如果有另一种方法可以实现我的目标,我也很乐意看到它,但我想出的唯一解决方案是'dynamic_cast'

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