Windows SDKのDirectShowサンプルを調べています。多くのクラスでは、デフォルト以外のコンストラクタが使用されています。それらのコンストラクタはどのように呼び出されますか?誰が議論を出しますか?COMクラスにコンストラクタが必要な理由登録なしでCOMクラスを使用するには?
これらのクラスを登録せずにC++プログラムで使用できますか?もしそうなら、クラスコンストラクターを直接使用することができます。私は次のコードで何が起こるか登録なしCOMクラスを使用する場合は
:
Foo * foo = new Foo(.....); // note, not using CoCreateInstance
Bar * bar = foo->QueryInterface(...);
bar->Release();
delete foo; // CRASH?
ありがとうございました!
'Release'が一般的なケースでどのように実装されているのかわかりません(ノーオペレーションでも、別のメモリアロケータでも可能です)。ここでは、 'これを削除する 'ことが考えられます。あなたは 'CoCreateInstance' +' Release'を使うべきです、これは唯一安全なことです。 –