Сериализация объекта класса - PullRequest
0 голосов
/ 20 октября 2011
class MyClass {
public:
  MyClass(int X= 0; int Y= 0) { /*...*/ }
private:
   int x;
   int y;
};

Я пытаюсь избежать лишних затрат при использовании библиотеки boost :: serialization для этого простого класса.Итак, допустимо ли сделать что-то вроде этого:

  MyClass Obj(43, 64);
  char *c = (char*)&Obj; // ok?
  // write to file

1 Ответ

2 голосов
/ 20 октября 2011

Приведение вашего объекта в качестве указателя не будет делать то, что вы хотите. Допустимо привести его адрес к указателю на символ: (char*)&Obj или еще лучше reinterpret_cast<char*>( &Obj );. На самом деле доступ к этому указателю для хранения необработанных данных и последующей загрузки из них не гарантирует работу по стандарту. Расположение в памяти сложных объектов зависит от реализации. Это было бы стандартным поведением, если бы класс, в котором был тип POD (я думаю, что C ++ 11 теперь называет их классами стандартной компоновки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...