1

クラスA、Bが2つあります。

Aの場合、2つの方法callB()とがありchecksomethinginB()ます。

Bの場合、1つの方法がありexecute()ます。

私はそれらを次のように使用します:

A _a;
_a.callB(); //inside the function, B object _b will be created

//after _b created, in another place, _b will execute _b.execute().
_b.execute()
{
   // I want to use A method checksomethinginB()
}

ですから、BでAメソッドを使う良い方法がわかりません。私が作成できるのは静的関数を使うことですが、あなたの提案に感謝して、もっと良い方法があると思います!!

4

3 に答える 3

0

class Aで動作する関数が必要な理由がよくわかりません。class Bに移動A::checksomethinginB()B::checksomething()ます。ここから、2つの(+1)可能性がわかります。

  1. A::checksomethinginB/B::checksomethingがからの状態を使用しない場合Aは、完了です。
  2. もしそうなら、それは実際にAそのコードで使用するので、あなたは彼にそれを与える必要があります:おそらくそれへの参照を渡します。
  3. Aの静的パーツのみを使用する場合は、それらをA::staticSomethingNotMentionedBefore直接使用できます。
于 2012-11-10T12:20:59.057 に答える
0

の正しいインスタンスAをのコンストラクタにB渡すか、必要に応じてそれを渡します。

checksomethinginB状態が必要ない場合はA、もちろん静的にすることができます。

于 2012-11-10T12:05:45.230 に答える
0

クラスの詳細を見たり、クラスが実際に何をしているのかを説明したりせずに、次のオプションを検討できます。

  1. クラスAとクラスBの間に共通性がある場合は、一方を他方から導出することを検討できます。正当な理由がない限り、これは使用しないでください。また、必要なことを実行できるようにするだけではありません。
  2. の関数シグネチャを変更してB:execute、クラスAのインスタンス(またはAのインスタンスへのポインタまたは参照)であるパラメータ引数を取り、を呼び出すことができるようにします。A::checksomethinginB()
  3. checksomethinginB()提案するように関数を静的にします-Aの非静的メンバー変数へのアクセスが必要な場合、これは不可能であることに注意してください

おそらくより良い代替案がありますが、クラスと機能要件に関する詳細がなければ、言うのは難しいです

于 2012-11-10T12:06:59.057 に答える