相关疑难解决方法(0)

什么是相当于C++的虚函数的Rust?

我正在尝试在Rust中实现类似于类中的C++虚函数的东西,我会有一个带有数据的基础结构,然后我会保留一些未定义的函数,如下例所示:

class A {
    int stuff;
public:
    virtual void foo(int a, int b) = 0;
    void function_that_calls_foo() { /*...*/ foo(1, 2); /*...*/ }
}

class B: public A { void foo(int a, int b) { /* ... */ } }
Run Code Online (Sandbox Code Playgroud)

我试图使用函数指针实现它,但没有太大的成功.我可以使用具有A函数的特征,并在另一个类上实现A,但是我会丢失struct的数据.什么是最好的(最快?)方式在Rust中实现这种东西?

struct A {
    ...
}

impl A {
    fn function_that_calls_foo(&self) {
        ...
        self.foo(a, b);
        ...
    }
}

struct B {
    a: A;
}

impl B {
    fn xxx(&self) {
        a.function_that_calls_foo(1, 2);
    }

    fn foo(&self, a: i32, b: i32) {...} …
Run Code Online (Sandbox Code Playgroud)

oop traits rust

3
推荐指数
1
解决办法
1865
查看次数

标签 统计

oop ×1

rust ×1

traits ×1