我正在尝试在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)