【发布时间】:2015-06-19 06:45:38
【问题描述】:
我正在尝试在 C++ 中为参与者实现消息处理。 scala中的以下代码是我试图在c++中实现的东西
def receive = {
case Message1 =>{/* logic code */}
case Message2 =>{/* logic code */}
}
因此,我们的想法是为各种消息类型创建一组处理函数,并创建一个调度方法来将消息路由到其适当的消息处理程序。所有消息都将扩展基本消息类型。
解决这个问题的最佳方法是什么:
维护一个Map(Message_type, function_pointer),dispatch方法会检查map并调用相应的方法。但是,此映射需要在 Actor 类中手动完成。
我读到了这个library,图书馆正在按照我想要的方式处理消息,但我不明白他们如何在第 56 行创建的 lambda 函数上进行模式匹配。
如果有任何建议或阅读链接可以让我更接近这个问题的解决方案,我将不胜感激。
【问题讨论】:
-
如果您正在查看像 #1 这样的解决方案,您刚刚描述了虚拟表。除非您想使用像您向我们展示的那个库那样性感且难以辨认的东西,否则您为什么不注册侦听器来处理您的消息?您将获得地图和函数指针。
标签: c++ c++11 lambda actor messages