ファイルから読み書きするさまざまなデータのコンテナーであるクラスがいくつかあります。通常、ファイルには 1 行 (カンマ区切りのフィールド) ごとに 1 つのエンティティがありますが、エンティティが複数の行にまたがっている場合があります。
ファイルの読み取りと書き込みのコードを再利用する正しい方法を考え出そうとしています。fstream、すべてのチェック、および文字列の書式設定を処理する各クラスに個別の Read() 関数と Write() 関数を使用することもできますが、一部のコードを再利用するためのより良い方法があるはずだと感じています。
編集:
私は自分の問題について十分に具体的ではなかったことに気づきました。いくつかの回答/コメントが示唆した方法で実装するのを妨げたのは、複数行のエンティティがあることです。そのため、ファイルから読み取った行をクラスに渡して解析することはできません。いくつかの行を渡す必要がある場合があります。
エンティティが複数行の場合、通常は行の先頭に id フィールドがあるため、id が繰り返されると、複数の行を読み取る必要があります。
たとえば、1 つのファイルがポリゴンである場合、1 行に 2 つの座標があり、この場合は単純です。しかし、別のファイルがポリゴンのセットである場合、ポリゴン ID と各行に 2 つの座標が含まれます。そのように:
id, x, y
0, 1, 2
0, 5, 0
0, -1, -1
1, 4, 4
1, 0, 8
1, -4, 4
1, 0, 0
編集2:
最初の編集で自分の問題を説明しているときに、複数行のエンティティをどうするかを理解しました。読み取り行を 1 行ずつ各クラスに渡して、未完成のエンティティを設定することもできます。これは、他の人に説明しようとするとすぐに問題が明らかになるため、今では当たり前のように思えます。コメントしてくれてありがとう!