を使用して動的ディスパッチ仮想メソッドテーブルを使用してC。例えばダイナミック発送は、私はCを勉強し、練習として、私はJavaからに翻訳したい <p>C.</p>で動的ディスパッチを実現するために(好ましくは良い例による)のヒントを見つけることを期待しています仮想メソッドテーブル
私は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
にこれらのメソッドのアドレスを設定して、コンパイラ が正しい呼び出し方法を認識できるようにします。- それを機能させるために何を定義するか。
円形のペグを正方形の穴に入れようとするのではなく、非OOP言語でOOP構造を強制しようとすると、私はC++を使用し、Cでは使用しません。 –
@HovercraftFullOfEels私は私の教授が求めているように、私はそれをCで行うつもりです。 – Solix
*この種のもののソース*は、[Axel Tobias Schreiner]の[ooc.pdf](http://www.cs.rit.edu/~ats/books/ooc.pdf)です(http:// www .cs.rit.edu /〜ats/books /)。 –