>>684

使用する関数が継承等で増える可能性もあるのでfriend指定は出来ません。
関数をオーバーライドするときにクラスも新しく派生させればいいですけれど。

>>686

m_hDCとlocalが同じとは書いていません。

m_hDCの値はオブジェクトが作成されて破壊または分離されるまでの間でのみ有効ですよね。
(オブジェクトが生成される前に、生成に成功したかどうかをm_hDCの値から判断する処理をしても無意味です。)
有効範囲という意味で、m_hDCのような値が常に有効とは限らない変数。

しかしm_hDCほど寿命は長くなく、もっと一時的に、ある関数が呼ばれている間のみ、意味を持つ変数はみなさんどうするかなぁと。
Perlのlocal変数と同じようなことはメンバ変数を使った最初のやり方で出来ています。
しかしPerlのlocal変数同様特定の関数からのみ呼ばれることを期待して書いたとき、ほかの場所から呼ばれた場合に問題がでます。

で、それへの対応策が必要な変数をすべて引数へ渡すこと、さらにそれをクラスにまとめることです。
こうすればどこから呼ばれても、引数さえちゃんと渡されていれば問題なく動きます。
メンバ変数の無駄遣いもなくなりますが、クラスが1つ増えます。