我正在编写一个执行IPC的实现。用户执行一个调用,我接受所有这些参数并将它们传递给其他进程。
我为这些函数编写了一个基于逻辑的自动代码生成器,其工作方式如下:
当我只有普通的老数据类型时,这是非常好的。但是,当函数参数是非豆荚时,我的逻辑就会失败,因为:
有人能告诉我如何应对这种情况吗?
发布于 2013-03-08 13:10:29
您需要决定如何进行序列化。
例如,您可以定义一个类型,该类型表示在各方之间交换的消息,然后实现一个将对象序列化为消息的泛型函数。当您有自定义逻辑时,您将专门化序列化函数。
以下是一些伪码:
class Message {...} // blah blah
// default imple
template<typename T>
Message& operator <<(Message& msg, T& t) { .. write it as a POD .. }
// specialize for types which need custom logic
Message& operator <<(Message& msg, SomeCustomType& x) { .. custom serialization ..}
要反序列化,您需要对operator >>
做类似的操作。那你就做:
Message msg;
MyType whatever = ...
msg << whatever;
// now send msg to other side.
当然,您需要消息中的一些元数据,这样您就知道如何在另一边解压(即到哪种类型)。
有很多示例(例如STL流或MFC如何在可序列化类型上使用CArchive类和Serialize
方法抽象它)
https://stackoverflow.com/questions/15294698
复制相似问题