variant_t 数据类型

_variant_t类封闭了VARIANT数据类型,VARIANT是一个结构体类型,我们可以看一下它的定义

typedef struct tagVARIANT  {
   VARTYPE vt;
   unsigned short wReserved1;
   unsigned short wReserved2;
   unsigned short wReserved3;
   union {
      Byte                         bVal;                 // VT_UI1.
      Short                       iVal;                  // VT_I2.
      long                         lVal;                  // VT_I4.
      float                         fltVal;               // VT_R4.
      double                     dblVal;             // VT_R8.
      VARIANT_BOOL        boolVal;           // VT_BOOL.
      SCODE                     scode;              // VT_ERROR.
      CY                            cyVal;                // VT_CY.
      DATE                        date;                 // VT_DATE.
      BSTR                        bstrVal;                       // VT_BSTR.
      DECIMAL                  FAR* pdecVal             // VT_BYREF|VT_DECIMAL.
      IUnknown                FAR* punkVal;            // VT_UNKNOWN.
      IDispatch                 FAR* pdispVal;           // VT_DISPATCH.
      SAFEARRAY              FAR* parray;              // VT_ARRAY|*.
      Byte                        FAR* pbVal;                // VT_BYREF|VT_UI1.
      short                       FAR* piVal;                 // VT_BYREF|VT_I2.
      long                        FAR* plVal;                  // VT_BYREF|VT_I4.
      float                        FAR* pfltVal;               // VT_BYREF|VT_R4.
      double                    FAR* pdblVal;              // VT_BYREF|VT_R8.
      VARIANT_BOOL       FAR* pboolVal;            // VT_BYREF|VT_BOOL.
      SCODE                   FAR* pscode;               // VT_BYREF|VT_ERROR.
      CY                           FAR* pcyVal;               // VT_BYREF|VT_CY.
      DATE                       FAR* pdate;                // VT_BYREF|VT_DATE.
      BSTR                       FAR* pbstrVal;             // VT_BYREF|VT_BSTR.
      IUnknown               FAR* FAR* ppunkVal;   // VT_BYREF|VT_UNKNOWN.
      IDispatch                FAR* FAR* ppdispVal;  // VT_BYREF|VT_DISPATCH.
      SAFEARRAY             FAR* FAR* pparray;     // VT_ARRAY|*.
      VARIANT                 FAR* pvarVal;              // VT_BYREF|VT_VARIANT.
      void                        FAR* byref;                  // Generic ByRef.
      char                        cVal;                            // VT_I1.
      unsigned short       uiVal;                           // VT_UI2.
      unsigned long        ulVal;                           // VT_UI4.
      int                           intVal;                         // VT_INT.
      unsigned int            uintVal;                      // VT_UINT.
      char FAR *               pcVal;                         // VT_BYREF|VT_I1.
      unsigned short FAR *    puiVal;                 // VT_BYREF|VT_UI2.
      unsigned long FAR *      pulVal;                // VT_BYREF|VT_UI4.
      int FAR *                        pintVal;               // VT_BYREF|VT_INT.
      unsigned int FAR *        puintVal;             //VT_BYREF|VT_UINT.
   };
};
 vt用来存储存储变量的类型,联合体用来存储对用类型的值,对_variant_t变量初始化调用的是_variant_t的构造函数,我们一般习惯于用一个int型的变量对数字类的变量进行初始化,这对_variant_t变量是不允许的,原因很简单,_variant_t的构造函数中没用用整型对其初始化的构造函数,可先将整型转化成long对其进行初始化,赋值操作与构造函数类似.


 

 

ZZ:http://www.diybl.com/course/3_program/c++/cppsl/2008515/116920.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值