का उपयोग कर मैं सीगतिशील प्रेषण आभासी विधि तालिका
में गतिशील प्रेषण को लागू करनेमैं सी सीख रहा हूँ और अभ्यास के रूप में, मैं जावा से अनुवाद करना चाहते हैं के लिए एक संकेत (अधिमानतः अच्छा उदाहरण द्वारा) को खोजने के लिए आशा करता हूं गतिशील प्रेषण वर्चुअल विधि तालिका का उपयोग कर सी।
उदाहरण के लिए मैं एक जावा कोड है:
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;
मैं इस वजह से मैं नहीं पूरा करने के लिए प्रयास करने के दौरान अटक कर रहा हूँ पता:
- सी में इन विधियों को कैसे परिभाषित करें।
vtable
में इन विधियों का पता सेट करें ताकि संकलक कॉल करने के लिए सही विधि को पहचान सके।- इसे काम करने के लिए परिभाषित करने के लिए और क्या करना है।
एक स्क्वायर छेद में एक गोल पेग को स्क्विश करने की कोशिश करने के बजाय - एक गैर-ओओपी भाषा पर ओओपी संरचना को मजबूर करने का प्रयास करने के लिए, मैं सी ++ का उपयोग करता हूं और इसके लिए सी नहीं। –
@ होवरक्राफ्टफुलऑफेल मैं इसे केवल सी में करने के लिए देख रहा हूं क्योंकि मुझे अपने प्रोफेसर द्वारा करने के लिए कहा जाता है। – Solix
* इस प्रकार की सामग्री के लिए स्रोत * [ooc.pdf] है (http://www.cs.rit.edu/~ats/books/ooc.pdf) [एक्सेल टोबीस श्राइनर] द्वारा (http: // www .cs.rit.edu/~ एटीएस/पुस्तकों /)। –