我希望您能提供一个示例(最好是好的示例)来实现C语言中的动态分派。
我正在学习C语言,作为练习,我想使用动态分派虚拟方法表将Java代码翻译成C语言。
例如,我有一段Java代码:
abstract class Foo {
public abstract int val();
public abstract Boolean error();
}
class Fail extends Foo {
public int val(){ return 0;}
public Boolean error(){return true;}
}
class IntFoo extends Foo {
int v;
public IntFoo(int value){this.value=v;}
public int val(){ return v;}
public Boolean error(){return False;}
}
我可以翻译一些基础内容,例如:
typedef struct Foo{
void(**vtable);
}Foo;
typedef struct Fail{
void(**vtable);
struct Foo inherited;
}Fail;
typedef struct IntFoo{
void(**vtable);
struct Foo inherited;
}IntFoo;
我在尝试完成这个项目时遇到了困难,因为我不知道:
- 如何在 C 语言中定义这些方法。
- 设置这些方法的地址在
vtable
中,以便编译器能够识别要调用的正确方法。 - 需要定义什么其他内容才能使其正常工作。