>551
541の例は単純に↓がベストであると考えている。
open/write/closeをラップしたいなら、Fileをラップするクラスを作り、File*を置換する。
 class Data {
  public: void SaveToFile() {
   //省略
  };
  private:
   File* m_pconfigfile;
 };

>552
>クラス無駄にポコポコ作れば俺オブジェクト指向やってるカッケーって脳汁でまくる知的障害者なんだろ
それは549で否定してるがな。
粒度の小さいクラスは、妥当なクラスに併合すれば良い。
でも>541みたいなのはそもそもopen/write/closeをラップする意味がないし、
併合先を間違えているとも言える。(Fileに併合して消滅させるべき)

>557
>Dataクラスが実用レベルまで拡張されると、>>541の例のメンバが十分な正当性を持ち始めるんだがな。
それはない。
open/write/closeにDataクラス固有の処理が追加されるならまだわかるけど。
でもその場合も必要になった時点で追加すれば良い。

>565
ルールを押し付けたいのではなく、原則はこうだよねというノリで書いております。
(如何なるルールにも例外はあると思う。)

>566
Dataに「Open」という関数を追加するのがNGなのではなく、
余所で定義済みの関数を、わざわざData内で定義しなおしてるのがNG。
「データファイルを開く」というDataクラス固有の処理ならばOK。