Windows環境でLPWSTR
からスマートポインタ的なBSTR
を作成する方法には次の2通りあります。
_bstr_t(...)
<comutil.h>wil::make_bstr(...)
"wil/com.h"
前者の_bstr_t(...)
はコンパイラ付属なので追加インストールが不要ですが、ムーブセマンティクス非対応で独自の参照カウンタを使用しています。作成する度に参照カウント管理用にクラスがnew
されます。また、LPWSTR/LPSTR
等からの作成に対応しています。
後者のwil::make_bstr(...)
はMicrosoft
のパッケージですが追加インストールが必要です。ムーブセマンティクス対応でメモリ消費は少ないですが、コピー時は新しいBSTR
が作成されます。LPWSTR
からの作成しか対応しません。
各種エラーパターン(エラーコード、フェイルファスト、例外)に対応した関数が存在します。
結局は用途に合わせて使い分けですが、それぞれの存在は知っておいて損はないと思いました。