我有两个函数,其中一个函数作为一个参数,这个工作正常,但我想在第二个函数中调用这个传递的函数。
class XY {
public:
void first(void f());
void second();
};
void XY::first(void f()){
}
void XY::second(){
f(); //passed function from first()
}
答案 0 :(得分:12)
您可以使用 std :: function 存储可调用对象并稍后调用它。
class X {
public:
void set(std::function<void()> f) {
callable = f;
}
void call() const {
callable();
}
private:
std::function<void()> callable;
};
void f() {
std::cout << "Meow" << std::endl;
}
然后创建X实例并设置callable:
X x;
x.set(f);
稍后调用存储的callable:
x.call();