4

インターフェイスオブジェクトへの(スマートではない)ポインターを持つクラス(pInterfaceと呼びましょう)があり、そのインターフェイスへのアクセスも必要とするネストされたクラスを構築しています。次のように、インターフェイスへのポインターをネストされたクラスのコンストラクターに渡すことで、これを回避します。

CNestedClass someClass( pInterface, ... );

ただし、このポインターをネストされたクラスに格納する最良の方法がわかりません。私は使用できます:

1) A scoped (or other smart) pointer (to the original object)
2) A pointer to a pointer 

あなたたちは何を提案しますか、そしてその理由は何ですか?

編集:明確にする必要があります-ネストされたクラスはインターフェイスオブジェクトのメソッドを呼び出す必要がありますが、それを作成(または「指している」オブジェクトを変更)しません。親クラスがそれを担当します。

4

5 に答える 5

1

インターフェイス (IMyInterface**ppInterface) へのポインターのアドレスを渡し、クラスによって実装されている場合はポインターを埋めます。

クラスは、その this ポインターをそのインターフェイスにキャストし、ポインター *ppInterface を埋めることができます。クラスがこのインターフェイスを実装していない場合、*ppInterface を NULL に設定できます。

于 2009-03-04T17:53:53.387 に答える