将一个种的对象存入文件,对象有一个变量是整型向量,存入文件后再读出时,整型向量中的数据读不出来

将一个类的对象存入文件,对象有一个变量是整型向量,存入文件后再读出时,整型向量中的数据读不出来
//z2是类的对象,是从之前存入的文件b中读出来,赋值给z2的。z2.getcnum()返回的是vector<int>类型的变量
//这是将数据读入到类z2的语句: file.read((char*)&z2,sizeof(z2));



 while (!z2.getcnum().empty())  

 {
  while(!in.eof()) //in是另一文件a的变量
  {

  //从文件b中读出的z2中的向量z2.getcnum()数据和文件a中读出的整型数据cai.getnum()判断是否相等
  if(z2.getcnum().back()==cai.getnum())
  {
  cai.display();
  cout<<endl;
  break;
  }
  in.read((char*)&cai,sizeof(cai)); //文件a的指针将下一个数据块读入cai
  }
  z2.getcnum().pop_back(); //向量删除最后一个元素
  in.seekg(0,ios::beg); ?//文件a指针复位
  }

但是问题是:z2.getcnum().back()中没有值,调试时发现显示Error,但是似乎又不是空的···到底是什么原因呢?而在写入文件前是能够正常将对象中向量的数据输出的···

------解决方案--------------------
类的读写不要直接file.read((char*)&z2,sizeof(z2))这样整体进行,应该是把对所有成员变量单独存取,并进行初始化。
------解决方案--------------------
还是第一次看到这样玩的。
------解决方案--------------------
读和写的是同一个进程不?

每个进程都有独立的地址空间的,应该是向量里面有保存了一些地址变量,这些地址换了一个进程就无效了。


------解决方案--------------------
对象是不能直接拿来写文件的,如果里面有指针什么的。