C++ PB中类中包含类的转换与使用
package MyStudents;
message Student
{
optional string name = 1;
enum enSex
{
MALE = 0;
FEMALE = 1;
}
optional enSex student_sex= 2 [default = MALE];
};
message Classroom
{
repeated Student students = 1;
};
#include <iostream>
using namespace std;
#include<fstream>
#include "Student.pb.h"
#pragma comment(lib, "libprotoc.lib")
#pragma comment(lib, "libprotobuf-lite.lib")
#pragma comment(lib, "libprotobuf.lib")
using namespace MyStudents;
int main()
{
Classroom scienceroom;
Student *pStudent = scienceroom.add_students();
pStudent->set_name("ganquanfu");
pStudent->set_student_sex(Student_enSex::Student_enSex_MALE);
pStudent = scienceroom.add_students();
pStudent->set_name("zhangxiaolan");
pStudent->set_student_sex(Student_enSex::Student_enSex_FEMALE);
string transferMsg;
scienceroom.SerializeToString(&transferMsg);
// cout << transferMsg << endl;
Classroom result;
if (!result.ParseFromString(transferMsg))
{
cout << "反序列化失败" << endl;
return -1;
}
int size;
size = result.students().size();
for (int i = 0; i < size; ++i)
{
pStudent = const_cast<Student*>(&result.students(i));
cout << pStudent->name() << pStudent->student_sex() << endl;
}
int wait;
cin >> wait;
return 0;
}