VARIANT and CComVariant

Top  Previous  Next

CComVariant is a C++ encapsulation of VARIANT.


They are more or less tagged unions.


An example of using CComVariant when programming in Inventor is in the many get_Item calls in for loops:


   const int ikNumConstraints = pConstraintList->Count ;

   for (int j = 1 ; j <= ikNumConstraints ; j++) {

       CComPtr<AssemblyConstraint> pConstraint;

       hRes = pConstraintList->get_Item(CComVariant(j),&pConstraint) ;

       if (FAILED(hRes)) {

           TRACE (L"Could not get the constraint %d of the assembly, hr=%X\n",j,hRes);

           return ;



       TRACE (L"Got constraint %d\n",j);



Look at that CComVariant(j) call. That is how you send an integer to get_Item when get_Item wants a VARIANT.


Note also that it all the get_Item things start at 1.


You can create an empty variant and a real double variant as illustrated below:


CComVariant varEmpty, varReal(0.0);


Or you can use a global constant empty variant like this.


Text, images and diagrams © 2021 Owen F. Ransen. All rights reserved. (But copy the source code as much as you want!)