2

ATL::CComVariantは少数の代入演算子があります。実装で私が目にするのは、代入演算子が を受け入れるかLPCOLESTR、最初のアクションが を呼び出すことです。IUnknown*IDispatch*Clear()

同じオブジェクトのメンバー変数が渡されるような方法で演算子が呼び出された場合

 CComVariant variant;
 variant = L"string";
 variant = variant.bstrVal;

(同じ効果を持つより愚かな方法があります)Clear()は、カプセル化されたオブジェクトを解放し、現在ぶら下がっているポインターに対するその後のすべてのアクションは、未定義の動作をもたらします。

私は正しいですか、それとも何か誤解していますか?

4

2 に答える 2