我希望找到在 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
以便编译器识别要调用的正确方法。 - 还有什么要定义以使其工作。