C++ではVARIANTという構造体と共用体が入り乱れてネストした形になっています。 大きくわけると,どんな型の値が収められているかを示すvtメンバと,実際の値が納められている部分になります。 実際にはCOleVariant(MFC)やATL::CComVariant(ATL)そして_variant_tと言ったラッパークラスがあるので扱いはそんなに苦ではありません。 そしてOLEで配列はSAFEARRAY構造体を使います。 これもCOleSafeArray(MFC)やATL::CComSafeArray(ATL)などのラッパーが存在します。 さて問題のコードはどうなるかというとATLを使えばこうなります。 ATL::CComSafeArray<VARIANT> sa(2); //2は要素数 sa[0] = 1; sa[1] = 5; ATL::CComVariant ls(sa); Arr