C++:使用回调机制调用函数
C++: call a function using callback mechanism
我对C++中的boost函数和回调机制非常陌生。在以下情况下,我找不到使用回调机制的方法:
在组件C1上,我有函数f1
。在另一个组件C2上,我有函数f2
。在正常流程中,f1()
在f2()
之前被调用。我需要在f1()
之前调用f2()
,但我遇到了困难,因为它们是在不同的软件组件上实现的(但在同一个本地存储库中),具有逻辑规则:C2知道C1,但C1不知道C2。
理论上,一个可能的解决方案是使用提升函数指针p2
到f2()
,然后创建一个函数。下面我试图通过服务器来模拟组件C2。代码属于组件C1,我正试图从服务器(C2)调用一个函数:
#include <iostream>
#include <boost/function.hpp>
#include <list>
#include <stdio.h>
using namespace std;
using namespace boost;
struct server
{
void func(int i, char a)
{
printf(" %d %c n", i,a);
}
};
typedef boost::function<void(server*, int,char)> my_func_t;
int main()
{
my_func_t var = &server::func;
server s;
var(&s , 10, 'a');
}
输出是10 a,这是应该的。
我尝试使用boost功能,因为有两个软件组件:C1和C2。C1不知道C2,但C2知道C1(逻辑约定)。问题是从C1调用C2中的函数,所以我不能用标准的方式只创建一个对象并调用该方法。
这是个好方法吗?如果是,我必须更新这个问题。
非常感谢!
我认为最简单的情况可能只是包装调用,假设您需要能够在运行时在正常和非正常之间任意切换:
void call_it(bool normal)
{
if(normal)
{
f1();
f2();
}
else
{
f2();
f1();
}
}
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 了解使用堆栈实现队列的递归调用机制
- 使用类似模板的机制调用具有相同签名的不同方法
- 将派生的对象地址分配给基础指针和调用击路仪的机制
- C++:使用回调机制调用函数
- WndProc调用机制(WinAPI)
- c++ vector复制赋值,调用其元素的复制机制
- 清理静态的机制为什么/如何获得访问权限,从而允许它调用私有成员
- 虚函数调用机制
- 使C函数指针与C++中基于C样式堆栈的调用机制一起工作
- 当我从赋值操作符返回值时,首先,调用复制构造函数的机制和基础是什么?