C++ 反序列化C+中的类实例+;

C++ 反序列化C+中的类实例+;,c++,serialization,C++,Serialization,这是我的*.h class ip_file_handler { struct IPheader { unsigned short int ver :4; unsigned short int ihl :4; unsigned short int total_length; unsigned char tos; unsigned char ttl; unsigned char protocol; unsig

这是我的*.h

class ip_file_handler {

   struct IPheader {
      unsigned short int ver :4;
      unsigned short int ihl :4;
      unsigned short int total_length;
      unsigned char tos;
      unsigned char ttl;
      unsigned char protocol;
      unsigned int checksum;
      unsigned short int identification;
      unsigned short int flag_offset;
      unsigned int ucSource;
      unsigned int ucDestination;
   };

   public:

   ip_file_handler(){}

   // func 1 (file to ip)
   static bool file_to_ip_packets(std::string input_file_name,
                                  std::string output_file_name,
                                  unsigned int source_ip,
                                  unsigned int destination_ip);

   private:

   IPheader ipInfo;
   list<string> data;
};
/*问题就在这里*/ 此行从文件中读取类:

ip_file_handler tmp;
outFile2.read((char*) &tmp, sizeof(ip_file_handler));
现在为什么不能从文件中读取类!? 输出文件不是空的

谢谢大家。 Adam

列表的数据(呃,
数据
)不存储在类中,而是在堆上单独分配。仅转储
ip\u文件\u处理程序的副本时,它不会存储在文件中


您必须分别写出列表中的每个字符串,并在再次读取它们时重新创建列表。

通常,将对象以二进制方式转储到文件并以二进制方式转储回内存是不安全的。您需要添加函数(或流运算符)以手动写入/读取每个成员。请正确设置问题的格式,并使用正确的拼写和语法。如果你不在问题上下功夫,不要指望陌生人会关心你的问题。谢谢你,波佩尔森,我会试试这个。
ip_file_handler tmp;
outFile2.read((char*) &tmp, sizeof(ip_file_handler));