mercredi 8 juin 2016

Store a function c++, and call it later

I'm developing an app, in which I have a lot of small algorithms, each algorithm represented by some lines of code, so I want to store that few lines of code as functions, but not only that, I have to store some data that each algorithm has, so I decided to make a "Algorithm" class, in which, I would have in a "variable" the function stored. So, I can use it later.

I don't know if this is possible or if there is another way to reach that. I think there would be problems with local variables or private members of the class where my "algorithms" are.

class Patterns {

private:
    double line;
    double addPoint(char n) {line += n;}

public:
    double addPattern(int m) {
        double tmp = 0;
        char param;
        // some calculations with m

        // many calls to addPoint, "algorithm"
        tmp += addPoint(param); // param1
        tmp += addPoint(param); // param2
        tmp += addPoint(param); // param3
        tmp += addPoint(param); // param4

        return tmp;
    }
}

just a little sample, I want to store all those lines of "addPoints()" in only one function, and use whenever I want, something like this

class Patterns {

private:
    double line;
    double addPoint(char n) {line += n;}

public:
    double addPattern(int m) {
        double tmp = 0;
        // some calculations with m

        /**
         * vector of Algorithm class, get any Algorithm, and of that,
         * return the stored function, so I can use it as in the above sample
         */
        auto fn = vec->back()->getFunction();
        tmp += fn(m)

        return tmp;
    }
}

Aucun commentaire:

Enregistrer un commentaire