1

COMオブジェクトへのメンバー変数ポインター参照を保持し、C++のクラス全体で参照を再利用することに問題はありますか。

COMオブジェクトを使用するたびに.CreateInstanceを呼び出したい、つまり毎回新しいインスタンスを取得する理由を知っている人はいますか。

あなたがこれをしたい理由がわかりません、

ありがとう、

(いいえ、受け入れられる答えです!!!)

4

3 に答える 3

5

それはあなたが本当に欲しいものに依存します。

毎回同じオブジェクトが必要な場合は、そのオブジェクトへのポインタを保持する必要があります。(何らかの理由で)毎回新しいオブジェクトが必要な場合は、毎回新しいインスタンスを作成する必要があります。CoCreateInstance()呼び出しは比較的コストがかかるため、オブジェクトを保持する必要がない場合は、オブジェクトを保持することをお勧めします。

于 2010-04-20T11:32:16.997 に答える
2

COMオブジェクトとは何か、そしてそれをどのように使用するかによって異なります。通常、ADO接続を再利用することは問題ありませんが、ダーティな状態のままにしておくと、再利用するときに奇妙な動作が発生する可能性があります。一部のCOMオブジェクトには、再初期化またはクリアメソッドがあり、それらを呼び出してクリーンな状態にリセットできます。

于 2010-04-20T11:34:18.367 に答える
2

この場合、それが良い考えであるかどうかを決定する多くの変数があるため、一般的な規則はありません。

まず、問題のCOMオブジェクトを所有している場合、つまりソースコードを持っていて、それらの使用方法を制御している場合は、完全に安全です。

COMオブジェクトがサードパーティのCOMオブジェクトである場合、それらの中にあるくだらないコードによって、使用するたびに「createInstance」が強制されることがあります-必然的に(そして自己保存)。

COMオブジェクトがプロキシオブジェクトとして機能している場合は、他のクライアントが同じオブジェクトを使用しているなどの理由で、COMオブジェクトを使用するたびに作成する必要があります。

もっと状況がありますが、要約すると:それは依存します...

于 2010-04-20T11:52:03.057 に答える