- 409 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:47:57 ]
- 長文失礼、ちょっとC++プログラムのコーディングでいい方法があれば誰か教えて下さい。
今、簡単なライブラリ的なクラスを作りました。それは継承されることを前提として います。仮にそれをKihonとしておきます。 今、Kihonの派生クラスHaseiを作りました。HaseiからKihonを使う方法ですがまず、Kihonの メンバ関数を通じて必要なパラメータ(privateな変数)を設定します。次にHaseiに double func(double x)なメンバ関数を定義します。これはKihonクラスでvirtual関数として 宣言されているものです。その後、Kihonのrunを実行するとHaseiのfuncが利用されて 処理が行われるというものです。一回のrunでfuncは何度も呼ばれます。 問題なのはHaseiで異なる二つの処理をKihonのrunにさせるにはどうしたらいいものかということ です。つまり、異なる相異なる2関数に対してKihonのrunを実行するにはどうすればいいのかと いうことです。しかも後に実行されるrunが前に実行されたrunの結果を使う必要があります。 初心者なりに考えた方法ですと・・・ 0, Haseiのオブジェクトh0を作る。 1, Haseiのfunc関数を作る。この関数内で別のクラス、__Haseiのオブジェクトh1を作る。__Haseiは Kihonを継承している。 2, 最初のrunで必要なメンバ関数funcを__Haseiで定義する。 3, Haseiのfunc関数からh1.runとして最初のrunを行う。 4, h0.runとして二度目のrunを行う。 (メンバ変数の設定に関しては説明略)。 実際、この方法だととりあえずは動作するのですが次のような問題点があります。 ・__HaseiからHaseiのプライベートメンバにアクセスできない。(friendでは次項が解決不能…) ・実はHasei自体もライブラリ的に実装を隠蔽してしまいたいため、__Haseiのfuncを変更 出来るようにしたい。(ちなみにHaseiのfuncは固定。) 多重継承をうまく使うと解決できそうにも思えるのですが賢い、実装方法はないでしょうか。 お力をいただけると幸いです。根本的にKihonの設計に対する指摘でもお願いします。
|

|