Mam nadzieję znaleźć podpowiedź (najlepiej poprzez dobry przykład) za realizację dynamicznego wysyłkę w C.Dynamiczny Wysyłamy w C stosując metodę wirtualną tabelę
uczę się C i jako praktyk, chcę tłumaczyć z Java C przy użyciu wirtualnej tabeli metod dynamicznej wysyłki.
na przykład mam kodu 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;}
}
a może po prostu tłumaczyć pewne podstawowe rzeczy jak poniżej:
typedef struct Foo{
void(**vtable);
}Foo;
typedef struct Fail{
void(**vtable);
struct Foo inherited;
}Fail;
typedef struct IntFoo{
void(**vtable);
struct Foo inherited;
}IntFoo;
siedzę, starając się wypełnić to, bo nie know:
- Jak zdefiniować te metody w c.?
- Ustaw adres tych metod w
vtable
, aby kompilator rozpoznał właściwą metodę wywoływania. - Co jeszcze należy zdefiniować, aby działało.
Zamiast próbować zgniatać okrągły kołek w kwadratową dziurę - aby spróbować wymusić strukturę OOP w języku innym niż OOP, używałbym C++, a nie C do tego. –
@HovercraftFullOfEels Szukam, aby zrobić to wc tylko dlatego, że jestem poproszony przez mojego profesora. – Solix
* Źródłem * tego rodzaju rzeczy jest [ooc.pdf] (http://www.cs.rit.edu/~ats/books/ooc.pdf) autorstwa [Axel Tobias Schreiner] (http: // www. .cs.rit.edu/~ ats/books /). –