任意の種類のタイプを取得できる配列をシミュレートする、古典的なリンクリストを作成しました。もちろん、あなたは臓器を削除して追加することができ、すべてのメソッドが正常に動作します。リンクリストのデータをバイナリファイルに保存して読み込みます。C++
バイナリファイルからの書き込みと読み取りのためのメソッドを書く必要があります。実際に何をするのかわかりません。 ファイルに書き込むためのさまざまな方法を試しましたが、これまでできなかったどこに行くし、私もコードが悪いのかわからない、
は私のリンクリストコード
template <class T>
class LinkedList
{
private:
struct node
{
T data;
node * next;
};
node* head;
public:
LinkedList();
~LinkedList();
void add(T value);
int find(T value);
bool remove(T value);
void clear();
bool ifEmpty() const;
int size() const;
void display() const;
T getData(int index) const;
T &operator[](int index);
void save(ofstream& out);
};
の一部のthatsと仕事
template <class T>
void LinkedList<T>::save(ofstream& out)
{
node* temp = head;
T temp2 = temp->data;
for (int i = 0; i < size(); i++)
{
out.write((const char*)(temp2), sizeof(temp2));
temp = temp->next;
temp2 = temp->data;
}
}
012をdosent保存方法のコードのthats
あなたのプロの何人かが私にそれを正しく行う方法の指示を与えることができる場合はどうぞ...
"シリアル化"を参照してください。 'T 'にポインタが含まれていれば、ポインタを読み戻すことは役に立ちません。 – nwp
うん、私はあなたの言うことを理解していますが、私はポインタや何かを使用しないように例外をスローすることができますか? – user8093201
'T 'にポインタが含まれているかどうかは分かりません。もしそれが 'プライベート'メンバーならどうですか?一般的には、 '' std :: string to_string(const T&t) ''と '' T from_string(const std :: string&s) ''のような関数をさまざまな '' T ''に書くことになります。 'int'のようないくつかの型では、それを自分で実装することができます。 [cereal](https://uscilab.github.io/cereal/)のような図書館も見てください。 – nwp