我正在開發一個應用程序,其中有很多小算法,每個算法都由一些代碼行表示,所以我想將幾行代碼存儲爲函數,但不僅如此,我必須存儲每個算法所具有的一些數據,所以我決定創建一個「算法」類,其中,我將在一個「變量」中存儲函數。所以,我可以稍後使用它。保存一個函數C++,並在以後調用它
我不知道這是否可能,或者如果有另一種方法來達到這一點。 我認爲會有我的「算法」所在的類的局部變量或私有成員出現問題。
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;
}
}
只是一個小樣本,我想的「addPoints()」所有的行存儲在只有一個功能,並使用每當我想,這樣的事情
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;
}
}
編輯:這個問題包括使用圖書館的<functional>
我認爲你的答案就在這裏:http://stackoverflow.com/questions/1485983/calling-c-class-methods-通過函數指針 –
你的意思是[lambda函數](http://en.cppreference.com/w/cpp/language/lambda)? – tadman
std :: function,std :: bind,lambda - 可能適合您的需求。 –