Edi*_*enz 2 c++ boost callback functor
假设我有一些像这样的代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
我需要创建一个简单的回调,只要调用Visitor :: visit(),就会调用它.我知道我可能应该将回调代码放在我的访问者中,但是它位于不同的上下文中,所以我想将callBackFunction()传递给Visitor,这样他就可以调用我的回调函数了.
我在网上查找了东西并看到了boost :: function,但是c ++已经有了基本的函子.
我应该使用哪一个更清晰的代码?回调将是一个简单的void()函数,但它可能会增长,你永远不会知道未来:)
建议的方法是什么?
是的boost :: function会做得很好.这是一个非常常见的用法.您需要使用boost :: bind将实例绑定到成员函数.
func = boost::bind( &MyClass::CallbackFunc, this);
Run Code Online (Sandbox Code Playgroud)
将是你如何在课堂上做到这一点.
确保"this"不会消失,或者你的升压功能会在某个升压头中间崩溃.
归档时间: |
|
查看次数: |
7173 次 |
最近记录: |