假设我有一些这样的代码:
class Visitor {
public:
Visitor(callBackFunction) {}
void visit() {
//do something useful
invokeCallback();
}
}
class ClassThatCanBeVisited {
Visitor &visitor;
public:
ClassThatCanBeVisited(Visitor &_visitor) : visitor(_visitor){}
void someUsefulMethod() {
int data= 42;
visitor.visit(data);
}
};
void callBackFunction() {
//do something useful in the context of the Main file
}
int main() {
Visitor visitor;
ClassThatCanBeVisited foo(visitor);
foo.someUsefulMethod();
}
我需要创建一个简单的回调,只要调用 Visitor::visit() 就会调用该回调。我知道我可能应该将回调的代码放在我的访问者中,但它在不同的上下文中,所以我想将 callBackFunction() 传递给访问者,以便他可以调用我的回调函数。
我在网上找了东西,看到了 boost::function,但是 c++ 已经有了基本的仿函数。
为了使代码更清晰,我应该使用哪一个?回调将是一个简单的 void() 函数,但它可能会增长,你永远不知道未来 :)
推荐的方法是什么?