我有一个分布式 C++ 应用程序,一台机器希望另一台机器调用特定对象上的特定函数。发送者知道对象的类型和它在接收者上的指针。我可以向接收者发送一个成员函数指针,但我不确定如何发送类型以启用将 this 指针转换为适当类型的类型。
理想情况下,映射可以静态完成(有没有使用 boost::mpl 和 boost::variant 的方法)?我知道可以在编译时调用的一组类型(两台机器也运行完全相同的二进制文件)。函数的签名也是固定的(假设它返回 void 并始终采用 int ,无论类型如何)。
我有一个分布式 C++ 应用程序,一台机器希望另一台机器调用特定对象上的特定函数。发送者知道对象的类型和它在接收者上的指针。我可以向接收者发送一个成员函数指针,但我不确定如何发送类型以启用将 this 指针转换为适当类型的类型。
理想情况下,映射可以静态完成(有没有使用 boost::mpl 和 boost::variant 的方法)?我知道可以在编译时调用的一组类型(两台机器也运行完全相同的二进制文件)。函数的签名也是固定的(假设它返回 void 并始终采用 int ,无论类型如何)。
正如评论中所说,您可以为此使用 RPC(远程过程调用)。
这个想法是定义一个协议,双方同意如何在网络上表示调用、参数和返回值。
根据您的环境,您可以选择现有的 RPC 库(参见链接的 wiki 文章中的列表),或者在使用现有的序列化和通信模块时自己编写一些简单的东西(参见例如 google protobufs 或 boost asio)。
COM 远程激活似乎很适合。唯一可能的问题是给定网络的安全限制。