Java には、オブジェクトをシリアル化するための非常に簡単な方法があります。C++ で同様のものを見つけることができませんでした。Boost Serializationと、ifstream と ofstream を使用した基本的なアプローチを見つけました。
タイトル、ID、ステータス、日付/時刻を持つ Task クラスがあります。クラス内にシリアル化関数を実装して、そのオブジェクトをバイナリ モードで保存したいと考えています。しかし、クラスの複数のインスタンスを単一のバイナリ ファイルに保存したいと考えています。たとえば、Task 配列です。
クラスにシリアル化メソッドを実装するのは良い方法でしょうか? 一度に 1 つずつシリアライズするだけで、ファイルを何度も開いたり閉じたりするので、ifstream/ofstream を使用するとうまくいきません。また、すべてのタスクは異なるファイルに保存されます。
Boost のシリアル化は問題ないように見えましたが、可能であればサードパーティの依存関係を避けるのが最善です。
これを達成する最良の方法は何ですか?
私のクラスヘッダー:
#ifndef TASK_H
#define TASK_H
class Task {
public:
enum Status { COMPLETED, PENDIENT };
Task(std::string text);
~Task();
// SETTERS
void setText(std::string text);
void setStatus(Status status);
// GETTERS
const std::string getText() const;
const bool getStatus() const;
const int getID() const;
const int getCount() const;
const std::string getDate() const;
const std::string getTime() const;
// DATE
const int getDay() const;
const int getMonth() const;
const int getYear() const;
// TIME
const int getSecond() const;
const int getMinute() const;
const int getHour() const;
// UTILS
//serialize
const void printFormatted() const;
// OVERLOAD
bool operator==( const Task &text2 ) const;
private:
void setID();
static int sCount;
int id;
std::string text;
Status status;
tm *timestamp;
};
#endif