我一直试图围绕c ++中的回调功能.我想要实现的目标如下:
我有两个对象,每个对象都有自己的线程.一个对象A具有指向第二个对象的指针B.见例子:
class A
{
public:
// ...
private:
std::unique_ptr<B> b;
};
class B
{
public:
void add_message(MessageType msg);
// ...
};
Run Code Online (Sandbox Code Playgroud)
我想要实现的是让对象A使用指针添加消息B然后继续执行其他操作,但是有回调或处理程序或者在B回复该消息时触发的内容.B对消息进行一些处理并将其传递给其他对象以便在其自己的线程上进行处理,但最终会得到一个回复.那么我怎么知道什么时候B回复我的消息,例如:
// In class A
MessageType m();
b->add_message(m)
// A's thread continues doing other stuff
...
// some notification that b has a reply?
Run Code Online (Sandbox Code Playgroud)
我知道我可能不得不使用std :: function作为我想要使用的回调但是我不能通过查看已经有很多例子来了解如何做到这一点.任何帮助是值得赞赏的,并注意到我已经看了很多例子,但不能把它绑回到我想要实现的目标或者不理解......