0

書き込みや読み取りなどのメソッドを提供する FileIO クラスを作成したいと考えています。また、FileIO の実装を非表示にしたいと考えています (現在、それは std::fstream から派生しているだけです)。問題は、std::fstream がいくつかの例外をスローする可能性があることですが、FileIO クラスで std::fstream 例外をスローしたくありません。自分でスローしたい (例: FileIO::SomethingBadHappened)。これを行うエレガントな方法はありますか?

私の解決策は、std::fstream のすべてのメソッドを追加の try/catch ブロックで書き直すことです。

編集: FileIO クラスは単なる例です。任意のクラスをラップするための一般的な解決策を探しています。

4

2 に答える 2

3

これを行うための「エレガントな」方法は、車輪の再発明を行わないことです。特にこのホイールは、月に何千回も行き来しています。それは試され、真実です。そこでこれを発明する必要はありません。

于 2012-06-18T21:59:53.207 に答える
0

これを回避する方法はありません。別の例外を再スローする場合は、例外を生成する可能性のある関数呼び出しの周りに try/catch ブロックを配置する必要があります。

継承を使用するのではなく、カプセル化を使用する必要があります。呼び出しを伝播できるオブジェクトをクラスに所有させます。これにより、必要な機能のみを提供するため、作業を行う基礎となるクラスのすべてのメソッドをラップする必要がなくなり、インターフェイスを簡素化できます。

于 2012-06-18T22:25:23.640 に答える