Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 序列化在C+中究竟是如何工作的+;?_C++_Serialization_File Io - Fatal编程技术网

C++ 序列化在C+中究竟是如何工作的+;?

C++ 序列化在C+中究竟是如何工作的+;?,c++,serialization,file-io,C++,Serialization,File Io,以下是我的代码文件: main.cpp #include <iostream> #include <fstream> #include "Car.h" #include "Engine.h" using namespace std; int main() { Car* car = new Car(1984); /* do something here */ delete car; return 0; } 引擎 #ifndef ENGINE

以下是我的代码文件:

main.cpp

#include <iostream>
#include <fstream>
#include "Car.h"
#include "Engine.h"
using namespace std;

int main() {
   Car* car = new Car(1984);
   /* do something here */
   delete car;   
   return 0;
}
引擎

#ifndef ENGINE_H
#define ENGINE_H

#include <iostream>
using namespace std;

class Engine {
public:
   Engine();
   virtual ~Engine();
   void serialize(ostream& s) {
      s << ' ' << engineType;
   } 
   void unserialize(istream& s) {
      s >> engineType;
   }
private:
   int engineType;
};

#endif /* ENGINE_H */
我想在main.cpp中做的是将创建的Car对象保存到file.txt,然后从那里读取它。这到底是怎么回事?例如:如何在Car类中调用序列化函数

如果我听起来像个傻瓜,我很抱歉,但这整件序列化的事情对我来说是相当新鲜的


编辑:当我在所有序列化和非序列化函数前面添加“void”时,代码现在可以编译了。

这与序列化无关:函数需要返回类型,即使它是void。所以这是错误的:

serialize(ostream& s) // look, no return type.
您可能需要返回
void

void serialize(ostream& s) { /* code as before */ }
或通过引用返回流以允许链接:

ostream& serialize(ostream& s) {
  return s << ' ' << engineType;
} 
ostream&serialize(ostream&s){

returns s这与序列化无关:函数需要返回类型,即使它是
void
。因此这是错误的:

serialize(ostream& s) // look, no return type.
您可能需要返回
void

void serialize(ostream& s) { /* code as before */ }
或通过引用返回流以允许链接:

ostream& serialize(ostream& s) {
  return s << ' ' << engineType;
} 
ostream&serialize(ostream&s){

returns s这与序列化无关:函数需要返回类型,即使它是
void
。因此这是错误的:

serialize(ostream& s) // look, no return type.
您可能需要返回
void

void serialize(ostream& s) { /* code as before */ }
或通过引用返回流以允许链接:

ostream& serialize(ostream& s) {
  return s << ' ' << engineType;
} 
ostream&serialize(ostream&s){

returns s这与序列化无关:函数需要返回类型,即使它是
void
。因此这是错误的:

serialize(ostream& s) // look, no return type.
您可能需要返回
void

void serialize(ostream& s) { /* code as before */ }
或通过引用返回流以允许链接:

ostream& serialize(ostream& s) {
  return s << ' ' << engineType;
} 
ostream&serialize(ostream&s){

返回S BTW,您可以考虑文本格式的串行化(例如,在使用中,等等)。注意:<代码> CAR*CAR=新车(1984);/*在这里做某事*/Delk Car;返回0;< /C> > java程序员(为什么不简单地<代码> Car Car(1984);/*在这里做某事*/Read 0;< /Cuff>)(参见(使用箭头键或PGUP/PGDN导航)BTW,您可以考虑文本格式的串行化(例如,在使用中,等等),并且可以考虑:<代码> CAR*CAR=新车(1984);/*在这里做某事*/Delk Car;返回0;前java程序员(为什么不简单地<代码> Car Car(1984))/*在这里做某事* /返回0;< /代码>(参见(使用箭头键或PGUP/PGDN导航))BTW,您可以考虑文本格式的串行化(例如,在使用中,等等),并且您也可以考虑或……注意:<代码> CAR*CAR=新车(1984)/**在这里做某事*/删除Car;返回0;<代码>前java程序员?为什么不简单地<代码> Car Car(1984);/*在这里做某事*/返回0;< /Cord>(见(使用箭头键或PGUP/PGDN导航))BTW,您可以考虑以文本格式序列化(例如,在使用中,等等)。你也可以考虑或等等…注:<代码> CAR*CAR=新车(1984);/*在这里做某事*/Delk Car;返回0;前java程序员(为什么不简单地<代码> Car Car(1984);/*在这里做某事*/返回0;< /代码>(见使用箭头键或PGUP/PGDN导航))谢谢!在函数前面添加void类型修复了问题。谢谢!在函数前面添加void类型修复了问题。谢谢!在函数前面添加void类型修复了问题。谢谢!在函数前面添加void类型修复了问题。