gpt4 book ai didi

C++:使用回调机制调用函数

转载 作者:行者123 更新时间:2023-11-28 07:10:38 24 4
gpt4 key购买 nike

<分区>

我对 C++ 中的 boost 函数和回调机制非常陌生。我找不到在以下情况下使用回调机制的方法:

在组件 C1 上,我有函数 f1。在另一个组件 C2 上,我有函数 f2。在正常流程中,f1()f2() 之前被调用。我需要在 f1() 之前调用 f2(),但我遇到了困难,因为它们是在具有逻辑规则的不同软件组件(但在同一本地存储库中)上实现的: C2 知道 C1,但 C1 不知道 C2。

理论上一个可能的解决方案是使用 boost 函数指针 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 的函数,所以我不能以标准方式只创建一个对象并调用该方法。

这是做事的好方法吗?如果是这样,我必须更新问题。

非常感谢!

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com