当然,你的Function
可以存储一个std::function<int(int, int)> http://en.cppreference.com/w/cpp/utility/functional/function然后你可以构造Function
with a lambda http://en.cppreference.com/w/cpp/language/lambda:
#include <functional>
#include <iostream>
class Function {
std::function<int(int, int)> function;
public:
Function(std::function<int(int, int)> f) : function(std::move(f)){};
int calculate(int x, int y){ return function(x, y); }
};
int main() {
Function divide([](int x, int y){ return x / y; });
std::cout << divide.calculate(4, 2) << "\n";
}
现场演示 http://melpon.org/wandbox/permlink/8f2DACAWhXMXI57F.
但就目前情况而言,我不确定什么Function
提供您无法做到的优惠std::function
直接地:
#include <functional>
#include <iostream>
using Function = std::function<int(int, int)>;
int main() {
Function divide([](int x, int y){ return x / y; });
std::cout << divide(4, 2) << "\n";
}
现场演示 http://melpon.org/wandbox/permlink/diF5t8I0U1Jnu1QF.