Új hozzászólás Aktív témák

  • jattila48

    aktív tag

    válasz jattila48 #4073 üzenetére

    Egy szimuláció a következő lehet:

    class Akarmi{
    public:
    Akarmi(int x):a(x){}
    int addto(int x){
    return a+x;
    }
    private:
    int a;
    };

    Akarmi *pa;

    int closure_func(int x){
    return pa->addto(x);
    }

    void main(int argc,char *argv[]){
    pa=new Akarmi(5);
    std::cout << closure_func(6);
    }

    A fenti példában closure_func 5-öt ad hozzá az argumentumához. és nem tfv., címe pedig használható lenne callback fv. pointerként. A gond csak az, hogy ha szükségem lenne egy 11-et hozzáadó closure-re is, akkor létre kéne hozni egy globális Akarmi(11) objektumot is (pl. pa11 nevu pointerrel), és definiálnom kéne egy closure_func11-et, ami a pa11-gyel hívja az addto tfv.-t. Ez nem túl jó megoldás. Amikor előző hozzászólásomban azt írtam, hogy futás közben kódot generálnak, akkor arra gondoltam, hogy kb. ezt a konstrukciót hozzák létre. Amikor létrejön az Akarmi(5) objektum, annak címével (mint konstanssal, vagyis a generált kódban ezt a címet "bedrórozva" konstansként használják) legenerálják a closure_func kódot, és closure fv. pointerként pedig visszaadják a röptében generált kód kezdőcímét. Így talán világosabb mire is gondoltam.
    Várom a hozzászólásokat!

Új hozzászólás Aktív témák